C# · 12月 24, 2021

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

我在我的日志中打印了很多行,同时调试如下: System.Diagnostics.Debugger.Log(0,null,responseFromServer);System.Diagnostics.Debugger.Log(0,t[0]); ….

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

我试过用

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

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

解决方法 在.NET中,成语Environment.NewLine是一个System.String,它由适当的System.Char组成,用于终止一行文本,因此: System.Diagnostics.Debugger.Log(0,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]);

十分简单.

但更好的是,为什么不跟踪?

我会指出你到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跟踪类型(例如,如果要打印到屏幕,则可以使用控制台跟踪器),也可以创建自己的自定义类型有必要的.美丽!

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