带有log4net的WPF - 将日志保存在userappdata中

时间:2014-10-30 17:55:27

标签: c# wpf log4net log4net-configuration

我的解决方案中有一个DLL项目负责在我的其他项目中记录事件。现在我正面临着保存日志文件的问题。我想将其保存在用户应用程序数据中(c:\ users \\ AppData \ Local \ .....)

如何在log4net.config文件中访问该位置?

我在我的dll项目中有这个:

 static Log()
        {
            log4net.GlobalContext.Properties["LogFileName"] = @"d:\fileRelease2"; //log file path
#if DEBUG
            log4net.GlobalContext.Properties["LogFileName"] = @"d:\fileDebug2"; //log file path
#endif

            FileInfo configFileInfo = new FileInfo("log4net.config");

            log4net.Config.XmlConfigurator.ConfigureAndWatch(configFileInfo);

            log = LogManager.GetLogger(typeof(Log));
        }

提前致谢。

此致

===========编辑2 ==========

我设法将我的log4net.config设置为:

<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="DEBUG" />
        <levelMax value="OFF" />
      </filter>

      <param name="AppendToFile" value="true"/>
      <file value="${AppData}\AppName\Logs\log" />
      <staticLogFileName value="false"/>
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value=" yyyy-MM-dd&quot;.txt&quot;"/>

      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger: %message%newline"/>
      </layout>     
    </appender>

我现在面临的问题是在IDE(VS2013 ultimate)中创建了文件夹。当我安装应用程序时(使用visual studio项目安装程序),不会创建文件夹/文件。

如果我使用管理员权限启动应用程序,则会创建文件夹/文件...

任何想法为什么?

2 个答案:

答案 0 :(得分:0)

尝试使用

 log4net.GlobalContext.Properties["LogFileName"] = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "fileRelease2");

答案 1 :(得分:0)

我认为log4net.Util.PatternString就是你所需要的。解释如何使用它的优秀答案已经发布在Stackoverflow上:How can I change the file location programmatically?

相关问题