【发布时间】:2011-09-05 17:16:05
【问题描述】:
我目前正在运行一个创建类的多个实例的 Windows 服务。
在我的解决方案中的服务类和所有其他类的顶部,我有这样的东西:
private static readonly ILog _log = LogManager.GetLogger(typeof(SomeClassTypeHere));
在我的 App.config 中,我为单个文件配置了 Log4Net:
<log4net debug="true">
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs\SomeLogFileName.xml" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<countDirection value="1" />
<maxSizeRollBackups value="30" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.XmlLayoutSchemaLog4j">
<locationInfo value="true" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="RollingFileAppender" />
</root>
</log4net>
这在大多数方面都非常有效,并且所有内容都记录到一个文件中。但是,我真的很想为我的服务创建的特定类的每个实例创建一个单独的日志文件。
这是一个我们经常需要监控以获取支持的类,我们可以同时运行一些实例。
我们不知道在给定时间会运行哪些实例,因此在配置中创建静态文件有点痛苦。
我尝试取消只读修饰符并在类构造函数中设置以下内容:
_log = LogManager.GetLogger("DataCollectionClass_" + deviceName + "_" + DateTime.Now.ToString("MMddyyyy"), typeof(SomeClassTypeHere));
但这需要我在配置中手动定义一个 appender,这会很麻烦而且很难跟上。
对在 L4N 中执行此操作有什么想法吗?我看过链接here,但真的不知道是否需要这么多的框架。
【问题讨论】:
标签: c# logging service log4net