log4net中的日志文件在哪里?

时间:2016-02-01 19:13:51

标签: asp.net-mvc log4net

我在asp.net mvc应用程序的Web.config文件中输入了以下条目:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
    ...
  </configSections>

  <log4net>
    <appender name="PublicAccessAppender" type="log4net.Appender.RollingFileAppender">
      <datePattern value="'C:\Users\my_user_name\Documents\Temp\logs\public-access.'yyyy-MM-dd'.log'" />
      <staticLogFileName value="false" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <maxSizeRollBackups value="5" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>

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

  ...
</configuration>

我希望我尝试实现的目标非常明确,但是当我运行应用程序(在IIS中托管)时,我没有得到任何日志文件。 FWIW,目录层次结构存在于Temp文件夹中,我喜欢log4net来生成路径中的其余目录/文件。

我已将log4net nuget软件包添加到我的应用程序中,并且我使用INFO级别进行日志记录。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

我认为你无法完全进入datePattern,必须只有YYYYmmdd之类的东西。将文件路径放入file元素:

<file value="C:\Users\my_user_name\Documents\Temp\logs\public-access.log" />
<datePattern value="yyyyMMdd" />
<preserveLogFileNameExtension value="true" />

最后一个元素强制将datePattern放在.log扩展名之前,这可能是您最初的目标。

答案 1 :(得分:0)

这是工作的appender配置:

<appender name="PublicAccessAppender" type="log4net.Appender.RollingFileAppender">
  <file value="C:\temp\my_user_name\Documents\Temp\logs\app.log" />
  <datePattern value=".yyyy-MM-dd" /><!-- can be omitted as it's the default datePattern value -->
  <rollingStyle value="Date" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
  </layout>
</appender>

对于努力使用log4net配置的读者而言:在IIS中托管的asp.net几乎有0个写入权限,因此您最有可能遇到的问题是您的Web应用程序根本没有写入日志的权限文件。

这就是我发生的事情,我在调用log4net.LogManager.GetRepository().ConfigurationMessages后检查调试器中.Configure()的内容时注意到了这一点。

我跟着this post给了我的网络应用程序必要的权限以写入日志文件(即读/写/修改)。