2013-02-26 39 views
5

我有一个使用log4net进行日志记录的内部应用程序。我想要在%LOCALAPPDATA%\Vendor\App\application.log生成日志。不幸的是,log4net改为创建日志文件%APPDATA%。这不是一个很大的问题,因为我们实际上并没有在这里使用漫游配置文件,但是如果我可以避免的话,我不喜欢在代码中留下小小的特质。如何在Windows XP和7上将log4net配置为写入%LOCALAPPDATA%?

有关如何将文件写入指定位置的任何想法,而无需配置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> 

回答

6

如果这是行不通的,这将意味着你的环境变量是错误的。

Log4net在处理appdata或localappdata中没有任何特别之处。它所做的就是调用System.Environment.GetEnvironmentVariables()来返回散列表,并根据返回的值执行替换。