[英]log4net fails to log
因此由於某種原因,我們的記錄器已停止記錄,而我完全不知道為什么。 我在項目中使用的是以下內容:
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附加程序添加到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>
除了可能的文件權限問題外,我發現在使用時
[assembly: log4net.Config.XmlConfigurator()]
在ASP.NET項目中,它實際上不會做任何事情(我在使用調試字符串附加程序)。
對我來說,解決方案是在Application_Start
甚至在global.asax中啟動log4net。
protected void Application_Start()
{
log4net.Config.XmlConfigurator.Configure();
}
替換為:
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net, Version=1.2.11.0, Culture=neutral, PublicKeyToken=a3d255455d3dcb36"
requirePermission="false"/>
為了這:
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"
requirePermission="false"/>
而不是
log4net.Config.XmlConfigurator.ConfigureAndWatch()
呼叫
log4net.Config.XmlConfigurator.Configure();
讓我知道是否可以這樣
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.