I find that using Console.Error.WriteLine() works well.
However, both Console.WriteLine() and Console.Out.WriteLine() work poorly because NUnit intercepts them and they can come out in a different order than execution. NUnit emits Out console messages when a test ends or a fixture is finished, even if the message was written at the start of the fixture or test.
Console.Error.WriteLine() solved this for me, thanks to a comment on gitlab at https://github.com/nunit/nunit/issues/4828#issuecomment-2358300821