首先介绍一下有关情况的背景信息。我有一个主要的应用程序(让它称之为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来解决我的问题?
答案 0 :(得分:0)
你有没有试过log4net?它易于使用且稳定:http://logging.apache.org/log4net/ 有很多关于如何自定义日志和允许多种格式的示例,请参阅http://logging.apache.org/log4net/release/config-examples.html
答案 1 :(得分:0)
您可以使用Nlog替代log4net。
您可以立即以最少的配置实现它,并积极进行持续开发。