我在我的应用程序中设置了log4net记录器,我初始化了多个日志文件:
<appender name="AlgorithmData" type="log4net.Appender.RollingFileAppender">
<file value="H:/Logs/AlgorithmData.csv" />
<PreserveLogFileNameExtension value="true" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value="yyyyMMdd" />
<maxSizeRollBackups value="20" />
<maximumFileSize value="100MB" />
<staticLogFileName value="true" />
<ImmediateFlush value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
</appender>
<appender name="AlgorithmTimeData" type="log4net.Appender.RollingFileAppender">
<file value="H:/Logs/AlgorithmTimeData.log" />
<PreserveLogFileNameExtension value="true" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value="yyyyMMdd" />
<maxSizeRollBackups value="20" />
<maximumFileSize value="100MB" />
<staticLogFileName value="true" />
<ImmediateFlush value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
</appender>
有没有办法只放置文件名并将连接附加/连接到文件路径的appsetting值,这样我可以更改文件路径而不管环境如何而不必更改记录器?
答案 0 :(得分:0)
没有开箱即用的配置选项,但只需最少的代码即可轻松设置。
我了解您想将日志文件夹的路径存储在AppSettings
中,如下所示。
<configuration>
<appSettings>
<add key="logPath" value="H:\Logs" />
</appSettings>
</configuration>
在应用程序的启动例程中,将logPath AppSetting
的值分配给Log4net context property
。
log4net.GlobalContext.Properties["logPath"] = ConfigurationManager.AppSettings["logPath"];
通过RollingFileAppender
使用此上下文属性配置%property{logPath}
的输出文件路径。
<appender name="AlgorithmTimeData" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="%property{logPath}\AlgorithmTimeData.log" />
<!-- More settings go here. -->
</appender>
这将导致在H:\Logs\AlgorithmTimeData.log
处创建日志文件。