【问题标题】:Log4net doesn't create a log file on a production serverLog4net 不在生产服务器上创建日志文件
【发布时间】:2018-11-07 09:32:08
【问题描述】:

我知道 Stack Overflow 上已经有很多 log4net 问题,但它们似乎无法解决我的具体问题。

下面的 log4net 配置用于我的应用程序。

<log4net>
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="E:\Logs\" />
    <datePattern value="yyyy-MM-dd'_APP.log'" />
    <appendToFile value="true" />
    <immediateFlush value="true" />
    <rollingStyle value="DATE" />
    <staticLogFileName value="false" />
    <maxSizeRollBackups value="10" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date||%2thread||%-5level||%logger||%message%newline" />
    </layout>
  </appender>
</log4net>

我省略了一些不感兴趣的部分。使用此配置,应用程序不会登录生产服务器。在我的本地开发 PC 上,它工作正常。当我启用 log4net 调试模式时,我看到它无法访问“E:\Logs\”目录,因为访问被拒绝。

我已经向这个文件夹添加了所有需要的权限。现在来了我不明白的部分。经过一些调试,我发现在标签中的 \ 之后附加一些东西,它突然起作用了。所以下面的配置工作正常。

<log4net>
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="E:\Logs\x" />
    <datePattern value="yyyy-MM-dd'_APP.log'" />
    <appendToFile value="true" />
    <immediateFlush value="true" />
    <rollingStyle value="DATE" />
    <staticLogFileName value="false" />
    <maxSizeRollBackups value="10" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date||%2thread||%-5level||%logger||%message%newline" />
    </layout>
  </appender>
</log4net>

这会创建一个日志文件 x2018-11-07_APP.log,但我不想附加 x...

有人可以帮我解释一下为什么会这样吗?

谢谢!

【问题讨论】:

  • 可能是未启用写入文件的权限
  • 正在使用什么版本的 log4net?答案可能取决于此。
  • 你试过了吗:&lt;file value="E:\Logs\.log" /&gt; &lt;datePattern value="yyyy-MM-dd'_APP'" /&gt; &lt;preserveLogFileNameExtension value="true"/&gt;
  • 如果改成“APP_2018-11-07.log”也可以试试&lt;file value="E:\Logs\APP_.log" /&gt; &lt;datePattern value="yyyy-MM-dd" /&gt; &lt;preserveLogFileNameExtension value="true"/&gt;
  • 遇到类似问题,我可以使用rollingStyle value="Composite" 解决问题(也需要&lt;staticLogFileName value="false" /&gt;)。您还可以尝试在当前 datePattern 值前面加上两个单引号来模拟起始字符串,即"''yyyy-MM-dd'_APP.log'"

标签: c# log4net log4net-configuration log4net-appender


【解决方案1】:

Fildor 提供的答案很有魅力。

<file value="E:\Logs\.log" /> 
<datePattern value="yyyy-MM-dd'_APP'" /> 
<preserveLogFileNameExtension value="true"/>

在开发 PC 上运行良好仍然很奇怪。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多