log4net在Windows 7上无法创建日志文件

4

我有一个使用log4net进行日志记录的程序集。
我在Assemblynfo.cs文件中有以下内容:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

log4net.config文件的格式如下:

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
    <layout type="log4net.Layout.PatternLayout">
      <!--          <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" /> -->
      <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
    </layout>
  </appender>

  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="${APPDATA}\\DC Lasersystem\\DCMark\\DCMarkLog.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <datePattern value=" yyyy-MM-dd" />
    <maxSizeRollBackups value="10" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
    </layout>
  </appender>

  <appender name="TraceAppender" type="log4net.Appender.TraceAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
    </layout>
  </appender>

  <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
    <layout type="log4net.Layout.PatternLayout">
      <!--          <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" /> -->
      <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
    </layout>
  </appender>

  <root>
    <level value="DEBUG" />
    <appender-ref ref="RollingLogFileAppender" />
  </root>
</log4net>

当我从IDE运行我的应用程序时,它可以正常工作。DCMarkLog.txt文件会在%APPDATA%\DC Lasersystem\DCMark目录中创建。
但是当我安装这个应用程序并从Program Files目录运行它时,我没有得到日志文件!
我在安装目录和发布目录中有相同的文件。
我猜测这是某种权限不正确的问题...
有没有人知道的?
//Anders
1个回答

4
这是一个权限问题。在Windows 7中,您需要管理员权限才能写入“Program Files”目录。因此,您有两种选择:
  • 以管理员身份运行应用程序
  • 或者首选方式是将日志文件写入用户具有写访问权限的文件夹。
要找到正确的写入位置,请参考: 在Windows 7和Vista中存储应用程序数据

但我以为我已经做到了!我在log4net.config中指定了日志文件为"${APPDATA}\DC Lasersystem\DCMark\DCMarkLog.txt"。而且在这个目录下,程序应该有写入的权限,不是吗? - Andis59
好的,我把APPDATA改成了ALLUSERSPROFILE,然后它就可以工作了!不知道为什么,但是... - Andis59

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接