c# - 跟踪同一应用程序的不同日志文件

标签 c# .net listener tracesource

首先是有关情况的一些背景信息。我有一个主要应用程序(我们称之为核心)和一些次要应用程序(我们称之为核心工作)。 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 - 这能解决我的问题吗?我完全没有这方面的经验。

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

最佳答案

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

关于c# - 跟踪同一应用程序的不同日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21305379/

相关文章:

c# - 标记代码的属性

c++ - 在构造函数中注册 weak_ptr 观察者

JavaFx:监听器和/或绑定(bind)处理

c# - 如何将单元测试分成组

c# - 如何在 C# 中进行径向集合查询?

java - 如何在 C# 中使用匿名类重新实现 Java 监听器

c# - 如何使用 libgit2sharp 推送标签

c# - 带有参数的 ASP.NET Core Razor 页面路由

c# - 从字符串 EOT 逗号 ETX 中删除控制字符序列

c# - 使用任务库的 Amazon S3 异步上传