2

首先是一些有关情况的背景信息。我有一个主应用程序(我们称之为核心)和一些次要应用程序(我们称之为核心作业)。Core 的主要工作是确保每个给定的 Core 作业都按照所述作业的时间表运行。这一切都是在 .NET C# 中开发的

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

在我看来,我也许可以使用内置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——这能解决我的问题吗?我完全没有经验。

我想知道的是:我的问题是否有一个优雅的解决方案?是否可以使用跟踪源和侦听器解决我的问题?

4

2 回答 2

0

你试过log4net吗?使用简单稳定: http: //logging.apache.org/log4net/ 有很多自定义日志和允许多种格式的例子,见http://logging.apache.org/log4net/release /config-examples.html

于 2014-01-23T10:36:04.177 回答
0

您可以使用Nlog作为 log4net 的替代品。

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

于 2016-10-03T20:40:58.617 回答