我希望log4net将日志文件(使用RollingFileAppender)写入公共应用程序数据文件夹的子文件夹(例如C:\ Documents and Settings\All Users\Application Data\Company\Product\Logs).
但是,在Win XP上,没有指定此文件夹的环境变量.我们有%ALLUSERSPROFILE%,%APPDATA%但没有什么比这更好的了%ALLUSERSAPPDATA%.
以编程方式,我可以使用Environment.SpecialFolder.CommonApplicationData,但我需要将它放在log4net配置中,如下所示:
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="%ALLUSERSAPPDATA%\Company\Product\Logs\error.log" />
</appender>
Run Code Online (Sandbox Code Playgroud)
好的,我们可以在我们的设置中定义这个,但也许有人提出了一个更好的主意?
我正在使用log4net,我将日志文件保存在AppData文件中,用于win XP/Vista等.
这是我的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>
Run Code Online (Sandbox Code Playgroud)
在我的源代码中,我可以通过执行以下操作获取路径:
System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Run Code Online (Sandbox Code Playgroud)
但是,我不能在我的app.config中使用上面的内容,如果我在我的系统上硬编码路径,那么路径将是:
C:\Documents and Settings\John\Application Data
Run Code Online (Sandbox Code Playgroud)
但是,这对每个客户来说都是不同的.那么有没有办法为app.config文件执行此操作?
非常感谢任何建议,