这是我的困境。我有RollingFileAppender
。我有BufferingForwardingAppender
。转发appender写入文件appender。我的文件追加器需要一个要写入的文件。我想要将文件命名为%Called Assembly Type%log.txt
,其中%Called Assembly Type%是被称为程序集类型(gasp!)
我打算按如下方式使用它:
从名为“OkilyDokily
”的服务致电:
var log4NetLogger = LogManager.GetLogger(GetMyAssemblyName());
log4NetLogger.LogInfo("Toodleoo");
从名为“Neighborinos
”的服务致电:
var log4NetLogger = LogManager.GetLogger(GetMyAssemblyName());
log4NetLogger.LogInfo("Toodleoo");
我希望有2个日志文件,一个名为OkilyDokilylog.txt
,一个名为Neighborinoslog.txt
有没有办法在log4net中执行此操作?我的BufferingForwardingAppender
会成为一个问题吗?我已尝试过此配置,但%logger
只是转换为字符串logger
:(
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString">
<conversionPattern value="C:\testlogs\%logger log.txt" />
</file>
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="-1" />
<maximumFileSize value="5KB" />
<staticLogFileName value="true" />
<countDirection value="1"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-8level %-21date{M/d/yyyy H:m:ss} %message%newline" />
</layout>
</appender>
答案 0 :(得分:2)
也许这个小小的问题可能会帮助你:你需要覆盖 RollingFileAppender 并在修改File
属性后调用ActivateOptions
方法,如下所示:
var myPath = "C:\\";
var log = LogManager.GetLogger(typeof(MySpecificAssembly).Name);
XmlConfigurator.Configure();
var rfa = (RollingFileAppender)LogManager.GetRepository().GetAppenders()
.First(c => c.Name == "RollingFileAppender");
rfa.File = myPath + typeof(MySpecificAssembly).Name + ".log";
rfa.ActivateOptions();