我有一个内部应用程序,它使用 log4net 进行日志记录。我希望在以下位置生成日志%LOCALAPPDATA%\Vendor\App\application.log
。不幸的是,log4net 正在创建日志文件%APPDATA%
反而。这不是一个大问题,因为我们确实不使用这里描述的漫游,但如果可以避免的话,我不喜欢在我的代码中留下一些特质。
关于如何将文件写入我指定的位置而不以编程方式配置 log4net 并使用 pinvoke 获取 XP 的路径,有什么想法吗?
这是我的配置文件的附加部分(如果有帮助的话):
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="${LOCALAPPDATA}\Vendor\App\application.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="100KB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger%newline%message%newline" />
</layout>
</appender>
参加这里的聚会已经很晚了,但我刚刚发现了这个并找到了答案。
看来你可以使用log4net.Util.PatternString https://logging.apache.org/log4net/log4net-1.2.11/release/sdk/log4net.Util.PatternString.html将环境变量插入文件路径。所以OP的例子就变成了:
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="%env{LOCALAPPDATA}\Vendor\App\application.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="100KB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger%newline%message%newline" />
</layout>
</appender>
Add 类型=“log4net.Util.PatternString”到文件元素,然后指定%env模式说明符后跟大括号中的环境变量名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)