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

Cur*_*der 6 c# system.diagnostics

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

System.Diagnostics.Debugger.Log(0, null, responseFromServer);
System.Diagnostics.Debugger.Log(0, null, t[0]); 
....
Run Code Online (Sandbox Code Playgroud)

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

我试过用

System.Diagnostics.Debugger.Log(0, null, t[0]+"\n");
Run Code Online (Sandbox Code Playgroud)

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

she*_*fly 9

在.NET中,成语Environment.NewLineSystem.StringSystem.Char终止一行文本的正确组成的,所以:

System.Diagnostics.Debugger.Log(0, null, t[0] + Environment.NewLine);
Run Code Online (Sandbox Code Playgroud)

[2015-05-07更新]

就在这几年的反思,我觉得我滴入此至少一点点(球虽然,我认为这是能够做到的低层换行是非常重要的,而无需有时拼的语言,以及;所以我也喜欢原来的答案...)

首先,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]);
Run Code Online (Sandbox Code Playgroud)

十分简单.

但更好的是,为什么不Trace呢?

我将在这里指出这个stackoverflow问题,但这里是要点.

您可以在App.config中进行设置,但当然您也可以以编程方式创建它,因为app.config部分只是创建对象!

就像是:

     ?
   <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]);
Run Code Online (Sandbox Code Playgroud)

是的,这是多目标; 并且您可以将其设置为多目标,并且您可以使用内置System.Diagnostics Trace类型(例如,Console如果您想要在屏幕上打印,则可以使用跟踪器),也可以根据需要创建自己的自定义类型.美丽!

最后一句话:Debug和Trace都有很多辅助函数,可以使你做的任何写操作更具象征性; WriteLineIf,TraceError等等,直到你找出它们为什么存在它们才能玩它们.它几乎保证你越使用它们,越有用,你会发现他们.♡