我想知道是否有任何方法可以利用System.Diagnostics.Trace上的方法,作为我的.Net库的公共日志记录形式。而不是在log4net或CommonsNet的这些库中包含依赖项(这似乎是一个类似的项目,用于在.Net中记录java的公共空间),我可以使用内置方法吗?
我看到可以向此跟踪输出添加侦听器,但是从性能关键代码调用Trace.TraceError
,Trace.TraceWarning
或Trace.TraceInformation
会不会有性能损失?< / p>
答案 0 :(得分:1)
它们已经为此目的而设计,因此将它们用于它们的目的是完全有效的。只需将其添加到您的app.config文件中:
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TextWriterOutput.log" />
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
另一方面,是的,它们会影响应用程序在性能敏感区域的性能。如果您对此如此关注,请使用下面的Common.Logging:
log.Trace(m=>m("value= {0}", obj.Value));
这样,只有启用了LogLevel.Trace,才会评估此功能。禁用时,性能损失最小。
答案 1 :(得分:0)
你的两个问题的答案都是'是'。首先,您需要实现(或使用现有的)TraceListener。
对于第二种情况,将会有性能损失,因为惩罚是否有意义实际上取决于记录器的性能和性能。