在 log4net 配置中使用注册表值

Using registry values in log4net configuration

是否可以在配置文件的 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>

您可以在 xml 中使用自定义 属性,这样您的行将如下所示:

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

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

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

已接受的答案对我不起作用 - 而是在字面上名为“%属性{RegLogPath}”的目录中创建日志文件!

也许这个语法不太正确?

编辑: 如此处所述: ...配置文件中似乎需要参数 'type="log4net.Util.PatternString"'(但不是 '%属性' 之前的 '.\')。

有了这个改变,它起作用了。