log4net共享配置文件的相对路径

时间:2018-05-21 21:03:57

标签: .net log4net app-config

我在我的应用程序中设置了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值,这样我可以更改文件路径而不管环境如何而不必更改记录器?

1 个答案:

答案 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处创建日志文件。