跟踪同一应用程序中的不同日志文件

时间:2014-01-23 10:25:43

标签: c# .net listener tracesource

首先介绍一下有关情况的背景信息。我有一个主要的应用程序(让它称之为Core)和一些小应用程序(让他们称之为Core作业)。 Core的主要工作是确保每个任何给定的Core作业都按照所述作业的计划运行。它都是在.NET C#

中开发的

我想创建一个环境,其中每个Core作业都可以将信息跟踪到不同的日志文件。我考虑使用简单的文件流,但我相信必须有一个更优雅的解决方案。

在我看来,我可以使用内置的TraceSource和听众。我为每个工作做了TextWriterTraceListener并开始跟踪。结果:每个工作都会向每个听众追踪信息。

回到绘图板。我研究了一下,现在可以看出我的第一种方法是多么愚蠢。我现在为每个工作制作了一个来源,并为每个来源制作了一个听众。在代码中我指定了我想跟踪的源。但收效甚微:(

来自app.config的

小部件:

  <system.diagnostics>
    <switches>
      <add name="AMSSUY" value="All"/>
    </switches>
    <sources>
      <source name="AMSSUY_TraceSource">
        <listeners>
          <add name="AMSSUY_Listener" type="System.Diagnostics.TextWriterTraceListener"
               initializeData="ksltest.log"/>
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

代码片段:

private static TraceSource log = new TraceSource("AMSSUY_TraceSource");
        log.TraceEvent(TraceEventType.Information, 1, "test test test");

我也尝试过制作共享的听众,但这并没有帮助。并不奇怪,因为据我所知,共享监听器的目的是让更多的源共享同一个监听器。

在一些论坛上,人们一直在谈论log4net - 能解决我的问题吗?我完全没有经验。

我想知道的是:我的问题有一个优雅的解决方案吗?是否可以使用traceources和listeners来解决我的问题?

2 个答案:

答案 0 :(得分:0)

你有没有试过log4net?它易于使用且稳定:http://logging.apache.org/log4net/ 有很多关于如何自定义日志和允许多种格式的示例,请参阅http://logging.apache.org/log4net/release/config-examples.html

答案 1 :(得分:0)

您可以使用Nlog替代log4net。

您可以立即以最少的配置实现它,并积极进行持续开发。