使用System.Diagnostics.Debugger.Log打印换行符

时间:2011-07-10 21:41:13

标签: c# system.diagnostics

我在我的日志中打印了很多行,同时调试如下:

System.Diagnostics.Debugger.Log(0, null, responseFromServer);
System.Diagnostics.Debugger.Log(0, null, t[0]); 
....

所有这些都在同一条线上印刷。我怎样才能让它们以单独的线条印刷?

我尝试使用

System.Diagnostics.Debugger.Log(0, null, t[0]+"\n");

但是,它没有用。任何帮助将不胜感激 。感谢

2 个答案:

答案 0 :(得分:9)

在.NET中,成语Environment.NewLineSystem.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,但这是要点。

You can set up in your App.config but, of course you can also just create it all programatically as well, since the app.config sections simply create objects!

类似的东西:

     ⋮
   <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方法会自动附加换行符。这两个都有重载接受格式化的字符串。