如何在跟踪中包含用户友好的时间戳

时间:2011-01-31 14:41:46

标签: c# tracing system.diagnostics

我想了解Trace.WriteTrace.TraceInformation之间的区别以及应该使用哪一个。

我尝试为时间戳/日期时间配置traceOutputOptions。我只需要为我正在编写的每条消息添加时间戳。我得到的日期时间有点混乱,因为它在下一行中添加了应用程序名称和用户友好的时间戳,如下所示。

ConsoleApplication1.exe Information: 0 : Hello  - Trace!  
DateTime=2011-01-31T14:26:11.1538509Z  
ConsoleApplication1.exe Error: 0 : Hello  - Trace!  
DateTime=2011-01-31T14:26:11.1538509Z  

我需要的只是

2011-01-31 11:32 Information: Hello - Trace!  
2011-01-31 11:33 Error: Hello - Trace!

有没有简单的方法在App.config进行设置?

2 个答案:

答案 0 :(得分:10)

我找到了一个更好的方法,不需要任何其他外部依赖(我认为包含的System.Diagnostics功能已经很丰富)

我以这种方式继承了我需要的两个监听器(ConsoleTraceListener和TextWriterTraceListener):

namespace MyApp
{
    namespace Diagnostics
    {
        public class DateTimeConsoleTraceListener : ConsoleTraceListener
        {
            public override void Write(string message)
            {
                base.Write(DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss.fffffff ") + message);
            }
        }

        public class DateTimeTextWriterTraceListener : TextWriterTraceListener
        {
            public DateTimeTextWriterTraceListener(string fileName) : base(fileName) { }

            public override void Write(string message)
            {
                base.Write(DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss.fffffff ") + message);
            }
        }
    }
}

然后,在App.config中:

<sharedListeners>
  <add name="ConsoleListener"
  type="MyApp.Diagnostics.DateTimeConsoleTraceListener, MyApp">
    <filter type="System.Diagnostics.EventTypeFilter"
      initializeData="All"/>
  </add>
  <add name="FileListener"
    type="MyApp.Diagnostics.DateTimeTextWriterTraceListener, MyApp"
    initializeData="MyApp.log" >
    <filter type="System.Diagnostics.EventTypeFilter"
      initializeData="All"/>
  </add>
</sharedListeners>

希望这有帮助!

答案 1 :(得分:1)

查看codeplex上的Ukadc.Diagnostics项目。它提供了一个很好的基于System.Diagnostics的插件包,它提供了比使用内置的System.Diagnostics TraceListeners可以实现的更强大的输出格式化功能(类似于log4net和NLog)。您甚至可以编写自己的格式/令牌对象,并将它们包含在输出格式化过程中。

该库易于使用且运行良好。