我在我的日志中打印了很多行,同时调试如下:
System.Diagnostics.Debugger.Log(0, null, responseFromServer);
System.Diagnostics.Debugger.Log(0, null, t[0]);
....
所有这些都在同一条线上印刷。我怎样才能让它们以单独的线条印刷?
我尝试使用
System.Diagnostics.Debugger.Log(0, null, t[0]+"\n");
但是,它没有用。任何帮助将不胜感激 。感谢
答案 0 :(得分:9)
在.NET中,成语Environment.NewLine
是System.String
,由适当的System.Char
(s)组成,用于终止一行文字,因此:
System.Diagnostics.Debugger.Log(0, null, t[0] + Environment.NewLine);
[2015-05-07更新]
反思这几年,我觉得我至少放弃了这一点(尽管如此,我做认为能够做到这一点很重要NewLine有时也不用语言;所以我也喜欢原来的答案......)
首先,David Brown确实给出了一个很好的答案:使用System.Diagnostics.Debug.WriteLine
(和Write
)代替。 是一个很好的解决方案,特别是在OP的情况下,因为调用的其他参数甚至没有被使用;并且Debug.Write
/ WriteLine
调用看起来像这样(例如,使用OP的原始调用,假设为了示例,OP的原始第一个参数responseFromServer
已经终止,第二个需要终止):
System.Diagnostics.Debug.Write(responseFromServer);
System.Diagnostics.Debug.WriteLine(t[0]);
容易腻。
但更好的是,为什么不Trace
?
我会指出你this stackoverflow question here,但这是要点。
类似的东西:
⋮ <trace> <!-- note: notional notation only --> <add name="consoleLog" logLevel="debug" enabled="" type="⋯ <add name="netLog" logLevel="verbose" enabled="false" addr="rdp://127.0.0.1:1935/nothing/stream" type="⋯ <add name="fileLog" logLevel="errors" enabled="true" file="c:\boots.ini" type="⋯ </trace> ⋮
然后您的代码就像Trace()
一样调用Debug()
。
System.Diagnostics.Trace.Write(responseFromServer);
System.Diagnostics.Trace.WriteLine(t[0]);
是的,这是多目标;并且您可以将其设置为多目标,如果要打印到屏幕上,可以使用内置的System.Diagnostics
Trace
类型(如Console
跟踪器,例如)或者您可以根据需要创建自己的自定义类型。美丽!
最后一句话:Debug和Trace都有很多辅助函数,可以使你做的任何写操作更具象征性; WriteLineIf,TraceError等等,直到你找出它们为什么存在它们才能玩它们。它几乎保证你使用它们越多,你会发现它们越多有用。 ♡
答案 1 :(得分:3)
根据System.Diagnostics.Debugger.Log
文档,该方法基于Visual Studio中选择的设置具有奇怪的行为。如果启用了非托管代码调试,则Debugger.Log
输出的字符串会附加行分隔符。否则,所有字符串都写在同一行。
您可能希望尝试使用System.Diagnostics.Debug
类的各种方法。有Write
个方法(接受换行符)和WriteLine
方法会自动附加换行符。这两个都有重载接受格式化的字符串。