在log4net配置中使用注册表值

时间:2015-11-18 06:46:23

标签: c# configuration registry log4net

是否可以将注册表值放在配置文件中的log4net文件名中? 例如,像这样:

<log4net>
    <appender name="MainLog" type="log4net.Appender.RollingFileAppender">
      <param name="Encoding" value="Unicode" />
      <param name="File" value="Logs\{Some-Registry-Value}\myLog.log" />
      <param name="AppendToFile" value="false" />
      <maximumFileSize value="50MB" />
      <maxSizeRollBackups value="20" />
      <rollingStyle value="Size"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d %-5p [%t] %logger - %m%n%exception" />
      </layout>
    </appender>

2 个答案:

答案 0 :(得分:1)

您可以在xml中使用自定义属性,以便您的行看起来像:

  <param name="File" value="Logs\%property{RegLogPath}\myLog.log" />

然后在代码中,在配置log4net之前:

     log4net.GlobalContext.Properties["RegLogPath"] = logsFolder;

答案 1 :(得分:0)

接受的答案对我不起作用 - 而是在一个字面上命名为&#34;%property {RegLogPath}&#34;的目录中创建日志文件。

也许这种语法不太合适?

修改: 如上所述:log4net %property does not work ...它出现参数&#39; type =&#34; log4net.Util.PatternString&#34;&#39; (但在配置文件中不需要&#39;。\&#39;%&#39;%属性&#39;)。

通过此更改,它可以正常工作。