【问题标题】:mvc 4 log4net not workingmvc 4 log4net 不工作
【发布时间】:2017-03-03 14:21:49
【问题描述】:

我正在尝试使用 log4net 进行日志,但它不起作用

我的日志文件是空的,没有数据。 没有 NHibernate 数据,也没有 USER 数据。 有人知道为什么吗?

我想这样做: web.config

<configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
  </configSections>

<appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />

    <add key="log4net.Config" value="log4net.config"/>
    <add key="log4net.Config.Watch" value="True"/>

  </appSettings>

<log4net debug="true">
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender, log4net">
      <file type="log4net.Util.PatternString" value="Logs/"/>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <staticLogFileName value="false"/>
      <datePattern value="'MyLog_'yyyyMMdd'.log'"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date{HH:mm:ss.fff} %-5level: %message%newline"/>
      </layout>
    </appender>
    <logger name="LogEmArquivo">
      <level value="DEBUG"/>
      <appender-ref ref="FileAppender"/>
    </logger>

    <logger name="NHibernate">
      <level value="WARN" />
    </logger>

    <logger name="NHibernate.SQL">
      <level value="DEBUG" />
    </logger>

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

关于组装信息

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

在我的助手上

log4net.Config.XmlConfigurator.Configure();
log  = LogManager.GetLogger("LogEmArquivo");

怎么了?我已经尝试了许多不同的方法,唯一令人高兴的是创建没有数据的文件 MyLog_20170303.log。

【问题讨论】:

    标签: asp.net-mvc-4 nhibernate log4net


    【解决方案1】:

    我将 log4net 配置保存在一个单独的文件中

    这是我的完整文件。

    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
      <file value="logs/error.log" />
      <appendToFile value="true" />
      <maximumFileSize value="100KB" />
      <maxSizeRollBackups value="2" />
    
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%level %thread %logger - %message%newline" />
      </layout>
    </appender>
    <logger name="NHibernate">
      <level value="WARN" />
    </logger>
    <logger name="NHibernate.SQL">
      <level value="DEBUG" />
    </logger>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="RollingFile" />
    </root>
    

    您是否尝试过使用静态日志文件名的更简单的日志配置,以查看它是否是您的 log4net 配置。

    您还可以打开 log4net 的内部调试以验证您的配置是否有效。在此处查看此答案How to track down log4net problems

    【讨论】:

      【解决方案2】:

      也许你遇到LOG4NET-506 issue:最新版本的log4net 发出一个根据file 配置属性命名的独占互斥锁。

      如果file 配置实际上以文件为目标,则不会导致问题。

      但在您的情况下,它是一个目录。如果您有许多进程试图登录到该目录,则只有其中一个能够登录。

      作为一种解决方法,我已指示 log4net 在我的案例中登录专用于每个应用程序的 Logs\ 子目录。喜欢:file="Logs\App1\"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-30
        • 2014-10-29
        相关资源
        最近更新 更多