我正在使用 log4net,我将日志文件保存在 win XP/Vista 等的 AppData 文件中。
到目前为止,这是我的 app.config 文件,我指定了名称 softphone.log。 Hoewver,我不确定如何指定文件的完整路径,因为每个用户都会有不同的路径,具体取决于他们的用户名。
<log4net>
<logger name="default">
<level value="DEBUG"/>
</logger>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="softphone.log"/>
<appendToFile value="true"/>
<rollingStyle value="Size"/>
<maxSizeRollBackup value="10"/>
<maximumFileSize value="1MB"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
</layout>
</appender>
</log4net>
在我的源代码中,我可以通过执行以下操作来获取路径:
System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
但是,我不能在我的 app.config 中使用上面的内容,如果我在我的系统上硬编码路径,路径将是:
C:\Documents and Settings\John\Application Data
但是,这对于每个客户来说都是不同的。那么有没有办法对 app.config 文件执行此操作?
非常感谢您的任何建议,
最佳答案
我不相信你可以做你想做的事,有一种方法可以自定义解析 app.config 文件的区域,这样你就可以添加你自己的 token ,你可以用正确的值替换它,但我不'看看它在 log4net 部分中是如何工作的。
但是,在配置中为 log4net 设置的所有内容也可以在代码中设置。我认为您最好的选择是在应用程序启动后立即在代码中设置 appender 的属性。
啊,没关系,快速搜索暴露了我的无知。来自 here和 here似乎与此类似:
<file value="${APPDATA}\log-file.txt" />
会做你想做的事。我自己还没有测试过这个,所以我也会留下我的第一个答案 - 但我很想知道你是否有运气。
关于C#如何在app.config文件中指定appData文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/964132/