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

ima*_*mak 10 c# trace system.diagnostics

我试图理解Trace.Writevs Trace.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  
Run Code Online (Sandbox Code Playgroud)

我所需要的就像是

2011-01-31 11:32 Information: Hello - Trace!  
2011-01-31 11:33 Error: Hello - Trace!
Run Code Online (Sandbox Code Playgroud)

App.config这样做有什么简单的方法吗?

Jam*_*mby 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);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,在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>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!


wag*_*ghe 1

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

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