1

log4net dll を使用してテキスト ファイルにログを記録する際に問題が発生しています。

Windowsサーバー2008 r2標準(64)でvs 2012 Expressを使用しています。次の手順を実行しました。

  1. 新しい asp.net Web フォームを開く
  2. nuget マネージャー経由で log4net をインストールします。
  3. global.asax ファイルでは、 Application_Start にこれがあります:

    log4net.Config.XmlConfigurator.Configure ();
    
  4. Web 構成で、configSections ノードに次の行を追加しました。

    < セクション名="log4net" タイプ="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>

  5. Web構成で、このセクションを追加しました:

    <log4net debug="true">
     <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
     <file value="c:\webSite\extraDownloadServerResources\Logs\ALU\log.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Composite"/>
    <datePattern value="yyyyMMdd" />
    <maxSizeRollBackups value="5" />
    <maximumFileSize value="5MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%n%-5p %d %5rms %-22.22c{1} %-18.18M %n - %m%n" />
    </layout>
    </appender>
    <root>
     <level value="DEBUG" />
      <appender-ref ref="RollingLogFileAppender" />
    </root>
    </log4net>
    
  6. 起動ページで、ロガーのインスタンスを取得しています:

    private static readonly ILog log = LogManager.GetLogger ( System.Reflection.MethodBase.GetCurrentMethod ().DeclaringType );
    
  7. Page_Load私はこの行を書きました:

    log.Debug (「テスト」);

  8. log.txt ファイル セキュリティに、読み取り/書き込み権限を持つ Deualt App Pool ユーザーを追加しました。

ログファイルには何もありませんでした。行った手順をテストするために、新しい空の Web サイトを作成し、これらの手順を 1 つずつ実行します。残念ながら(私はこの言葉が好きです)今回はログがファイルに書き込まれました。

誰でも可能な解決策を教えてもらえますか?

4

2 に答える 2

2

log4net 構成の問題をデバッグするには、log4net 内部デバッグを有効にする必要があります。

次のようにキーをappSettings追加します。log4net.Internal.Debug

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

これにより、log4net がすべてのメッセージをコンソールとTraceに出力できるようになります。すべての診断メッセージをファイルに転送するには、トレース リスナーを追加します。

<system.diagnostics>
    <trace autoflush="true">
        <listeners>
            <add      name="textWriterTraceListener" 
                type="System.Diagnostics.TextWriterTraceListener" 
                initializeData="C:\tmp\log4net.txt" />
        </listeners>
    </trace>
</system.diagnostics>

これらのスニペットは、log4net の FAQから直接取得したものであり、ここではクイック リファレンスのみを目的としています。

これにより、少なくともエラーメッセージが表示されるため、何が起こっているのかを理解できます.

于 2013-04-11T12:57:57.277 に答える
0

私は自分の問題を解決することができました。

すべての iss トラフィックを監視するツールをダウンロードしました。トラフィックを監視すると、ユーザー名が defaultAppPool でも AppPoolName でもないことがわかりました。ASP.NET v4.0でした。権限を付与してすべてを再起動した後、最終的にファイルにいくつかのログが表示されました...

于 2013-04-14T08:53:03.127 に答える