当前位置:  开发笔记 > 开发工具 > 正文

如何为log4net指定常用的应用程序数据文件夹?

如何解决《如何为log4net指定常用的应用程序数据文件夹?》经验,为你挑选了3个好方法。

我希望log4net将日志文件(使用RollingFileAppender)写入公共应用程序数据文件夹的子文件夹(例如C:\ Documents and Settings\All Users\Application Data\Company\Product\Logs).
但是,在Win XP上,没有指定此文件夹的环境变量.我们有%ALLUSERSPROFILE%,%APPDATA%但没有什么比这更好的了%ALLUSERSAPPDATA%.
以编程方式,我可以使用Environment.SpecialFolder.CommonApplicationData,但我需要将它放在log4net配置中,如下所示:


   

好的,我们可以在我们的设置中定义这个,但也许有人提出了一个更好的主意?



1> pduncan..:

我们只是用这个:


它很棒.


这行可以简单地插入到当前的appender配置中:


   


在Windows XP中,ALLUSERSPROFILE确实存在,默认为C:\ Documents and Settings\All Users,因此除非您有权限问题,否则这应该有效.

2> pilif..:

log4net邮件列表中的这个帖子解释了如何定义自己的路径替换变量.



3> codeulike..:

这是来自log4net邮件列表的完整代码,该邮件列表与pilif相关联:

基本上,该方法是为log4net配置文件实现自定义模式转换器.

首先将此类添加到您的项目中:

public class SpecialFolderPatternConverter : log4net.Util.PatternConverter
{
    override protected void Convert(System.IO.TextWriter writer, object state)
    {
        Environment.SpecialFolder specialFolder = (Environment.SpecialFolder)Enum.Parse(typeof(Environment.SpecialFolder), base.Option, true);
        writer.Write(Environment.GetFolderPath(specialFolder));
    }
}

然后设置FileAppender的File参数,如下所示:


    
      
      
    
    

基本上它%folder告诉它看看转换器folder,它将它指向Sp​​ecialFolderPatternConverter类.然后它调用Convert该类,传入CommonApplicationData(或其他)枚举值.

显然,在log4net的(1.2.11)的下一个版本将会有一个更简单的方法,描述在这里.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有