【问题标题】:log4net will not create logfile on Windows 7log4net 不会在 Windows 7 上创建日志文件
【发布时间】:2012-03-11 16:10:42
【问题描述】:

我有一个使用 log4net 进行日志记录的程序集。
我在 Assemblyinfo.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 目录运行它时,我没有得到日志文件!

我在安装目录和发布目录中有相同的文件。

我猜这是某种不正确的许可......

有人知道吗?

// 安德斯

【问题讨论】:

    标签: c#-4.0 windows-7 log4net


    【解决方案1】:

    这是一个权限问题。在 Windows 7 中,您需要管理员权限才能写入 Program Files 目录。您必须:

    • 以管理员身份运行您的应用程序
    • 或者将日志文件写入用户具有写入权限的文件夹的首选方式。

    要找到正确的写入位置可以参考: Where to store Application Data in Windows 7 and Vista

    【讨论】:

    • 但我以为我做到了!我在 log4net.config 中指定日志文件是“${APPDATA}\DC Lasersystem\DCMark\DCMarkLog.txt”。并且在这个目录下程序应该有写权限,还是?
    • 好的,我从 APPDATA 更​​改为 ALLUSERSPROFILE,然后它成功了!不知道为什么,但是...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    相关资源
    最近更新 更多