将变量添加到 Log4Net 中滚动文件附加程序的文件名

Bar*_*ens 0 c# logging log4net log4net-appender

有没有办法使 fileAppender 变量的名称?即当我在我的控制器上调用一个带有对象的操作时,我想将其写入日志文件。该文件的名称类似于:yyyyMMdd_hhmssms_[controller]_[method].json

这是我的配置文件中的内容:

<appender name="JsonFileAppender" type="log4net.Appender.RollingFileAppender" >
  <file value="c:\temp\" />
  <datePattern value="yyyyMMdd_hh.mm.ss.ms_%thread{CommonApplicationData}'.json'" />
  <staticLogFileName value="false" />
  <appendToFile value="true" />
  <rollingStyle value="Composite" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="5MB" />
  <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="%message%newline" />
  </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

这将返回以下文件名:20160224_01.30.28.3028_P1rea24{Co30onApplicPionDaPa}.json

小智 5

一种方法是在您的代码中设置一个环境变量,例如:

Environment.SetEnvironmentVariable("APPENDER_FILE", "Your File Path");
Run Code Online (Sandbox Code Playgroud)

然后,在 log4net XML 中配置此环境变量:

  <appender name="FileAppender" type="log4net.Appender.FileAppender">
    <file value="${APPENDER_FILE}"/>
Run Code Online (Sandbox Code Playgroud)