19

これは私のlog4net構成ファイルです

<?xml version="1.0" encoding="utf-8" ?>
<log4net debug="true">
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
    <filter type="log4net.Filter.LevelRangeFilter">
      <acceptOnMatch value="true" />
      <levelMin value="DEBUG" />
      <levelMax value="FATAL" />
    </filter>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %5rms [%-17.17t] %-22.22c{1} %-18.18M - %m%n" />
    </layout>
  </appender>

  <appender name="SmtpAppender" type="MySmtpClientSmtpAppender">
    <to value="a@a.com" />
    <from value="admin@x.com" />
    <subject value="Game Server Monitoring Failed!" />
    <smtpHost value="smtp.x.com" />
    <username value="admin" />
    <password value="x" />
    <bufferSize value="256" />
    <lossy value="true" />
    <evaluator type="log4net.spi.LevelEvaluator">
      <threshold value="ERROR" />
    </evaluator>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %d [ThreadId: %t] Class:%c{1} Method:%M %nMESSAGE:%n%m%n%n" />
    </layout>
  </appender>

  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="Logs\\wwwlog" />
    <appendToFile value="true" />
    <datePattern value="yyyyMMdd" />
    <maximumFileSize value="10MB" />
    <!--<rollingStyle value="Date" />-->
    <filter type="log4net.Filter.LevelRangeFilter">
      <acceptOnMatch value="true" />
      <levelMin value="INFO" />
      <levelMax value="FATAL" />
    </filter>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
    </layout>
  </appender>


  <root>
    <level value="DEBUG" />
    <appender-ref ref="ConsoleAppender" />
    <appender-ref ref="MySmtpAppender" />
    <appender-ref ref="RollingLogFileAppender" />
  </root>
</log4net>

何か不足していますか?明確さを維持しながらログサイズを小さくし、より良い変換パターンを実現するためのヒント/アドバイスはありますか? 面白いハックはありますか?

編集: XML ファイルがコード ブロックに取り込まれませんでした。更新中。何か提案はありますか?

4

6 に答える 6

33

誰もエンコーディングについて言及していません。中国語、日本語、アラビア語、または任意の 2 バイト言語でメッセージを記録している場合、これは非常に重要です。次に例を示します。

<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
  <encoding value="utf-8" />
  <!-- etc. -->
</appender>
于 2011-07-31T15:19:35.463 に答える
5

ログファイルのサイズを減らすには、ConversionPatternを調整してみてください。

これが私が使用するフォーマットです:

  <layout type="log4net.Layout.PatternLayout,log4net">
    <!-- a reduced format, saves bit of log space: -->
    <param name="ConversionPattern" value="%date{MM/dd HH:mm:ss,fff}-{%level}-%message%newline"/>
  </layout>

前:

2012-06-05 10:58:40,819 [1] INFOマイアプリ[(null)]-マイアプリ-===スターティング...。

後:

06/05 11:17:29,151-{INFO}-マイアプリ-===開始中...

注:Apacheのドキュメントはlog4netでは正しくないようです-ミリ秒単位でSSSを使用すると書かれているのに対し、log4netはfffを使用しています

1行あたりのわずかな節約で、全体的に大きな違いが生じる可能性があります:)

于 2012-06-05T10:06:12.947 に答える
4

私は非常に最小限の log4net 構成を実行し、XML 形式を使用することを好みますが、(Web アプリの場合) 追加することをお勧めするのは、ASP.NET トレース アペンダーです。以下を追加するだけです。

<appender name="AspNetTraceAppender" type="log4net.Appender.AspNetTraceAppender" >
   <layout type="log4net.Layout.PatternLayout" />
</appender>

次に、ルートロガー、またはアクティブ化することにした場所に移動します。

<root>
   <level value="WARN" />
   <appender-ref ref="XmlSchemaFileAppender" />
   <appender-ref ref="AspNetTraceAppender" />
</root>

これにより、ASP.NET の詳細をデバッグしているときに、関連するすべてのデバッグ データを 1 つのページにまとめることができます。ほとんどの場合、ASP.NET トレース アペンダーをコメント アウトして無効にしていますが、特にアプリでハングアップの原因となっている特定のサーバー ポストバック メソッドを特定しようとしている場合は特に、いくつかのインスタンスで本当に役に立ちました。 .

于 2009-03-06T16:57:33.207 に答える