【问题标题】:Does the .Net TraceSource/TraceListener framework have something similar to log4net's Formatters?.Net TraceSource/TraceListener 框架是否有类似于 log4net 的格式化程序的东西?
【发布时间】:2010-09-17 13:09:16
【问题描述】:

我已经开始使用内置的 TraceSource 和 TraceListener 类,我想独立于 TraceSources 和 TraceListeners 修改事件的输出格式。 TraceListener 似乎应用了自己的格式。是否可以在不为我使用的每个 TraceListener 创建新类的情况下完全更改格式?

【问题讨论】:

    标签: c# .net trace


    【解决方案1】:

    您可以使用Trace 上的直接Write()WriteLine() 方法将直接文本放入您的TraceListener。

    【讨论】:

    • 问题是关于 TraceSource,而不是 Trace。
    【解决方案2】:

    Enterprise Library Logging Application Block (http://msdn.microsoft.com/en-us/library/cc309506.aspx) 建立在 .Net TraceSource 和 TraceListener 类之上(因此您几乎可以将其放入您的项目中,它就可以工作),它支持一个消息格式化程序您可以在 web.config(或 app.config)中进行配置。

    【讨论】:

    【解决方案3】:

    这已经很晚了,但是对于任何可能正在寻找支持类似于 log4net、NLog 和 LAB 中可用格式的 TraceSource/TraceListener 解决方案的后来者,您可以尝试Ukadc.Diagnostics。您可以使用格式化字符串配置 Ukadc 提供的 TraceListeners,它将在将跟踪写入侦听器时应用。您还可以编写自己的标记并将它们添加到格式化语句中。例如,我为了好玩而写了一个,每次检索它的值时都会简单地增加一个计数器。结果是在日志文件中,每一行都会收到一个顺序增加的数字。我写了另一个允许将来自 Trace.CorrelationManager.LogicalOperationStack 的信息添加到输出中。

    我现在无法轻松访问具有该功能的计算机,否则我会发布这些示例。

    【讨论】:

      【解决方案4】:

      对于最终来到这里并仍在为 TraceListeners 寻找自定义格式的任何人,还有 Essential.Diagnostics https://essentialdiagnostics.codeplex.com/(披露:我参与了该项目)。

      为了回答最初的问题,TraceListener 可以接受配置中的自定义属性,因此可以编写一个基于配置处理多种格式的 TraceListener,这可能比编写多个更灵活。

      这就是 Essential.Diagnostics 所拥有的,它同时具有支持自定义格式字符串的 ColoredConsoleTraceListener 和 RollingFileTraceListener,许多格式值已经可用。

      【讨论】:

        猜你喜欢
        • 2011-05-01
        • 1970-01-01
        • 2013-01-13
        • 1970-01-01
        • 2011-01-21
        • 1970-01-01
        • 2013-02-02
        • 2011-12-04
        • 2011-01-07
        相关资源
        最近更新 更多