首先是有关情况的一些背景信息。我有一个主要应用程序(我们称之为核心)和一些次要应用程序(我们称之为核心工作)。 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/