在 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"'(但不是 '%属性' 之前的 '.\')。
有了这个改变,它起作用了。
是否可以在配置文件的 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}”的目录中创建日志文件!
也许这个语法不太正确?
编辑:
如此处所述:
有了这个改变,它起作用了。