首先是一些有关情况的背景信息。我有一个主应用程序(我们称之为核心)和一些次要应用程序(我们称之为核心作业)。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——这能解决我的问题吗?我完全没有经验。
我想知道的是:我的问题是否有一个优雅的解决方案?是否可以使用跟踪源和侦听器解决我的问题?