c# – log4net无法登录

因此,由于某种原因,我们的记录器已停止记录,我完全失去了原因.

我在我的项目中使用的是以下内容:

log4net配置:

<?xml version="1.0" encoding="utf-8"?>
<log4net>
  <root>
    <level value="DEBUG" />
    <appender-ref ref="UdpAppender" />
    <appender-ref ref="RollingFile" />
  </root>

  <appender name="UdpAppender" type="log4net.Appender.UdpAppender">
    <remoteAddress value="127.0.0.1" />
    <remotePort value="8180" />
    <layout type="log4net.Layout.XmlLayoutSchemaLog4j">
      <locationInfo value="true" />
    </layout>
  </appender>

  <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
    <file value="Logs/DA.RA.log"/>
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
    <appendToFile value="true"/>
    <maxSizeRollBackups value="10"/>
    <maximumFileSize value="10MB"/>
    <rollingStyle value="Size"/>
    <staticLogFileName value="true"/>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5level %date %logger - %message%newline"/>
    </layout>
  </appender>
</log4net>

在我的web.config中,我有以下行:

<section name="log4net" 
         type="log4net.Config.Log4NetConfigurationSectionHandler,log4net, Version=1.2.11.0, Culture=neutral, PublicKeyToken=a3d255455d3dcb36" 
         requirePermission="false"/>

在我的global.asax中,我在application_start方法中有以下行:

string filename = Server.MapPath( @"~\XML\log4net.xml" );
log4net.Config.XmlConfigurator.ConfigureAndWatch( new System.IO.FileInfo( filename ) );

当我在我的任何页面中调用记录器时,我使用:

private static readonly ILog logger = LogManager.GetLogger(typeof(ReportParameters));

我在网上找到了很多不同的东西.这些包括:

将以下行添加到项目中的程序集中

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

我试过了:

[assembly: log4net.Config.XmlConfigurator()]

我已将log4net.dll的版本从1.2.10.0升级到1.2.11.0.

我尝试将log4net appender添加到web.config文件而不是它自己的文件中,我仍然没有从日志中获得任何东西.

最佳答案 尝试打开log4net的内部调试并检查或共享结果:

注意:我制作了一个示例应用程序并使用了相同的log4net.xml文件和ConfigureAndWatch语句,并且它没有问题.我认为你有文件名路径解析问题或写入问题的权限.创建日志文件夹如果没有.

您需要添加到web.config

<appSettings>
  <add key="log4net.Internal.Debug" value="true" />
 </appSettings>

 <system.diagnostics>
  <trace autoflush="true">
   <listeners>
    <add
     name="textWriterTraceListener"
     type="System.Diagnostics.TextWriterTraceListener"
     initializeData="c:\\inetpub\\wwwroot\\log4net.txt" />
   </listeners>
  </trace>
 </system.diagnostics>
点赞