4

そのため、何らかの理由でロガーがログ記録を停止し、その理由について完全に途方に暮れています。私のプロジェクトで使用しているのは次のとおりです。

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 ファイルに追加しようとしましたが、まだログから何も得られません。

4

3 に答える 3

2

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>
于 2012-10-25T14:58:11.627 に答える
0

これを置き換えます:

<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();

そのように機能するかどうかを教えてください

于 2012-10-25T14:49:07.173 に答える
0

可能性のあるファイル許可の問題以外に、使用時に

[assembly: log4net.Config.XmlConfigurator()]

ASP.NET プロジェクトでは、実際には何も実行されません (デバッグ文字列アペンダーを使用していました)。

私にとっての解決策は、global.asax のイベント内で log4net を起動することでしたApplication_Start

protected void Application_Start()
{
    log4net.Config.XmlConfigurator.Configure();
}
于 2012-10-25T14:40:11.947 に答える