我正在尝试清理我们的应用程序当前用于其log4net实现的日志记录配置。使用包含XML文件的文件路径的参数调用应用程序。该XML文件包含各种配置信息,其中一个是要使用的记录器名称。
目前,每个配置文件都有自己的记录器,每个记录器都有自己的appender。作为一个例子,我们将:
和
即使每个appender都具有几乎相同的配置。有了数百个配置文件,app.config的这个日志记录配置部分非常大。我相信我可以将大部分内容合并到少数通用appender(Console,rollingFile,smtpToIT,smptpToSupport等),并更改每个记录器以使用通用appender。
我可视化此工作的一个重大障碍是,每个appender都需要在某处的配置中使用记录器的名称。我是否可以在appender中使用变量或设置,允许appender使用记录器的名称?例如,RollingFileAppender应该记录到' \ log [loggername] .txt' smtpAppender应该在MM \ DD \ YYYY'上记录[loggername]的主题。
我查看了http://logging.apache.org/log4net/release/config-examples.html,并相信我了解了如何添加日期,但我没有看到有关从appender中访问记录器名称的任何信息。
无论如何都要访问在appender中使用的记录器的属性?此外,我是否了解如何配置log4net,并在多个记录器之间重复使用appender?几个星期前我还没有听说过log4net,所以我可能会说错了。
答案 0 :(得分:2)
我在别处找到了解决方案,回答了另一个问题。不幸的是,我不记得我发现它的位置,只是回到原来的问题,因为Newtopian的答案。
您可以通过以下行设置全局属性:
log4net.GlobalContext.Properties["id"] = "SomeText";
然后如下所述在appender中引用它:
<appender name="NewAuto2ProcessingTestFILE" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="Log/%property{id}NewAuto2ProcessingTest.txt" />
<appendToFile value="true" />
<maxSizeRollBackups value="10" />
<staticLogFileName value="true" />
<datePattern value=".yyyy-MM-dd.\\t\\x\\t" />
<rollingStyle value="Date" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d [%t] %-5p - %m%n" />
</layout>
</appender>
答案 1 :(得分:1)
正在寻找相同的东西,不幸的是,它似乎不可能开箱即用,检查文档here关于模式字符串中接受的变量。
您可能需要创建自己的appender或自己的格式化程序才能访问更多变量(我怀疑两者都有)。