【发布时间】:2009-12-22 09:59:11
【问题描述】:
我的问题类似于this one,但上下文更简单。在我的例子中,我有一个应用程序,它可以使用不同的命令行参数同时运行两次(最多),所以每个实例都知道它的上下文。
app.config 文件定义了一个 log4net 部分来配置日志记录。这里是:
<log4net xsi:noNamespaceSchemaLocation="http://csharptest.net/downloads/schema/log4net.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<appender name="MainAppender" type="log4net.Appender.FileAppender">
<file value="${TMP}\NCAgent.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<appender name="DebugAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="ERROR" />
<appender-ref ref="MainAppender" />
<level value="INFO"/>
<appender-ref ref="DebugAppender"/>
</root>
</log4net>
当然,我们有一个问题,两个应用程序实例可能会记录到同一个日志文件,因此在运行时其中一个实例(选择明确且明确)加载 log4net XmlElement,在那里更改日志文件的名称并使用 XmlConfigurator.Configure(XmlElement) 重载配置 log4net。
我不喜欢我们的方法,觉得应该有更好的解决方案。有什么想法吗?
谢谢。
【问题讨论】: