我已经开始使用内置的TraceSource和TraceListener类,我想独立于TraceSources和TraceListeners修改事件的输出格式。 TraceListeners似乎应用了自己的格式。是否可以完全更改格式而不为我使用的每个TraceListener创建一个新类?
答案 0 :(得分:5)
企业库日志记录应用程序块(http://msdn.microsoft.com/en-us/library/cc309506.aspx)构建在.Net TraceSource和TraceListener类上(因此您几乎可以将其放入项目中并且它将起作用),并且它支持消息您可以在web.config(或app.config)中配置的格式化程序。
答案 1 :(得分:2)
这是为时已晚,但对于任何可能正在寻找支持与log4net,NLog和LAB中的格式类似的格式的TraceSource / TraceListener解决方案的后来者,您可以尝试Ukadc.Diagnostics。您可以使用格式化字符串配置Ukadc提供的TraceListeners,并在将跟踪写入侦听器时应用它。您还可以编写自己的令牌并将其添加到格式化语句中。例如,我编写了一个非常有趣的方法,只需在每次检索其值时递增计数器。结果是在日志文件中,每一行都接收到一个顺序递增的数字。我写了另一个允许Trace.CorrelationManager.LogicalOperationStack的信息添加到输出中。
我现在无法轻松访问有关该工作的计算机,或者我会发布这些示例。
答案 2 :(得分:0)
您可以使用Write()
上的直接WriteLine()
或Trace
方法将直接文本放入TraceListener。
答案 3 :(得分:0)
对于最终到此处并且仍在为TraceListeners寻找自定义格式的人,还有Essential.Diagnostics https://essentialdiagnostics.codeplex.com/(披露:我参与了该项目)。
为了回答原始问题,TraceListener可以接受配置中的自定义属性,因此可以编写一个TraceListener来处理基于配置的多种格式,这可能比编写多个格式更灵活。
这就是Essential.Diagnostics所拥有的,它有一个支持自定义格式字符串的ColoredConsoleTraceListener和RollingFileTraceListener,并且已经有许多格式值。