In reply to npratt:
If you are using the field macros and have implemented the do_print manually the last one has the precedence.
Im generating my UVM Frameworks automatically, i.e. each seq_item definition has a do_print method like this:
function void do_print(uvm_printer printer);
if(printer.knobs.sprint == 0) begin
`uvm_info(get_type_name(), convert2string(), UVM_MEDIUM)
end else begin
printer.m_string = convert2string();
end
endfunction : do_print
In all my projects I did (20+) I have never faced an issue like you are describing.