2009-03-06 12 views
15

これは私log4netの設定ファイルであるあなたの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="[email protected]" /> 
    <from value="[email protected]" /> 
    <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ファイルがコードブロックに入っていませんでした。更新中です。どのようなsuggestions?

+0

ハイライトコードは、Ctrl + Kを作ることができ、ミリ秒SSSを使用することを言います。あなたのHTMLはそれを止めました。 –

答えて

11

RollingLogFileAppenderの提案の1つは、minimal lockingModelを使用することです。この設定では、ログファイルはロックされず、開かれ、書き込みごとに閉じられます。

<lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
+0

よろしくお願いします。私もそれを使用して、それは同様にファイルを参照できるように自分のログビューアに役立つようだ。 –

+3

'FileAppender.MinimalLock'は、同じログファイルに複数のプロセス(スレッドではなくプロセスであり、log4netはスレッドセーフである)を作成しようとする場合にのみ必要です。それ以外の場合は、「このロック方法はFileAppender.ExclusiveLockよりもかなり遅い」http://logging.apache.org/log4net/release/sdk/log4net.Appender.FileAppender.MinimalLock.html –

+2

また、同じログファイルに複数のプロセスを書き込むことは、通常はお勧めできません。 [FAQ](http://logging.apache.org/log4net/release/faq.html#single-file):「複数のプロセスが同じファイルに本当にログする必要があるかどうかを尋ねてください。それをやって;-) "。通常は、各プロセスに書き込むための独自のログファイルを与えることをお勧めします。 –

2

これは、log4jとlog4netの似ているかどうかによって少し助けになるかもしれませんが、私はそれらが同じ仕様に基づいていると思いますが、私は確かに分かりません。

まあ、私が対応している。また

<?xml version="1.0" encoding="UTF-8"?> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 

    <!-- 
    <appender name="CHAINSAW_APPENDER" 
      class="org.apache.log4j.net.SocketAppender"> 
     <param name="RemoteHost" value="localhost" /> 
     <param name="Port" value="4445" /> 
     <param name="LocationInfo" value="true"/> 
     <param name="ReconnectionDelay" value="10000"/> 
    </appender> 
    --> 

    <appender name="FILE_APPENDER" 
     class="org.apache.log4j.RollingFileAppender"> 
     <param name="File" value="c:/dev/logs/OSB.log" /> 
     <param name="Append" value="true" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d [%t] %-5p [[[[%c]]]] (((%F:%L))) ___%C___ - %m%n"/> 
      </layout> 
    </appender> 

    <logger name="org.apache"> 
     <level value="WARN"/> 
    </logger> 

    <!-- 
    <logger name="com.conciliarpress.webapp.filter.GZIPFilte"> 
     <level value="WARN"/> 
    </logger> 

    <logger name="com.conciliarpress"> 
     <level value="DEBUG"/> 
    </logger> 

    <logger name="BibleFormControllerTest"> 
     <level value="DEBUG"/> 
    </logger> 

    <logger name="com.conciliarpress.webapp.action.sample.jmesa.JMesaSampleController"> 
     <level value="DEBUG"/> 
    </logger> 

    <logger name="com.conciliarpress.webapp.action.binding"> 
     <level value="DEBUG"/> 
    </logger> 

    <logger name="org.springframework.web.servlet.mvc"> 
     <level value="DEBUG"/> 
    </logger> 

    <logger name="org.directwebremoting"> 
     <level value="DEBUG"/> 
    </logger> 

    <logger name="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
     <level value="DEBUG"/> 
    </logger> 

    --> 

    <logger name="com.conciliarpress.dao.hibernate"> 
     <level value="DEBUG"/> 
    </logger> 

    <logger name="com.conciliarpress.service.impl"> 
     <level value="DEBUG"/> 
    </logger> 

    <logger name="com.conciliarpress.service.dwr"> 
     <level value="DEBUG"/> 
    </logger> 

    <logger name="com.conciliarpress.webapp.action"> 
     <level value="DEBUG" /> 
    </logger> 

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

</log4j:configuration> 

...私はlog4netの設定ファイルに持っているものを伝えることはできませんが、それは十分だ場合、私は私が私のlog4jの設定に持っているものを伝えることができますチェーンソーの設定ファイル:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd"> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true"> 
    <plugin name="logFileReceiver" class="org.apache.log4j.varia.LogFilePatternReceiver"> 
    <param name="fileURL" value="file:///c:/dev/logs/OSB.log" /> 
    <param name="timestampFormat" value="yyyy-MM-d HH:mm:ss,SSS"/> 
    <param name="logFormat" value="TIMESTAMP [THREAD] LEVEL [[[[LOGGER]]]] (((FILE:LINE))) ___CLASS___ - MESSAGE"/> 
    <param name="name" value="DLA_M_LogFile" /> 
    <param name="tailing" value="true" /> 
    </plugin> 

    <root> 
     <level value="debug"/> 
    </root> 
</log4j:configuration> 

また、ここでは後者のファイルdeciferあなたを助けるかもしれないいくつかの情報は次のとおりです。 http://wiki.apache.org/logging-log4j/Configuring_a_log4j_RollingFileAppender_with_Chainsaw

7

メッセージレベル(デバッグ、情報、エラー、または致命的)に応じて、コンソールに表示するときに異なる色でロギングする場合。二アペンダは、ファイルに保存することです:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> 
    </configSections> 

<log4net debug="false"> 
    <appender name="trace" type="log4net.Appender.TraceAppender, log4net"> 
    <layout type="log4net.Layout.PatternLayout,log4net"> 
     <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> 
    </layout> 
    </appender> 

<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender,log4net"> 
    <mapping> 
    <level value="ERROR" /> 
    <foreColor value="White" /> 
    <backColor value="Red" /> 
    </mapping> 
    <mapping> 
    <level value="DEBUG" /> 
    <foreColor value="White" /> 
    </mapping> 
    <mapping> 
    <level value="INFO" /> 
    <foreColor value="Green" /> 
    </mapping> 

    <layout type="log4net.Layout.PatternLayout"> 
    <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> 
    </layout> 
</appender> 

<appender name="RollingFile" type="log4net.Appender.RollingFileAppender,log4net" > 
    <param name="File" value="Logs/NSCurrent.log" /> 
    <param name="AppendToFile" value="true" /> 
    <param name="RollingStyle" value="Date" /> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    <datePattern value="yyyy-MM-dd" /> 
    <layout type="log4net.Layout.PatternLayout,log4net"> 
    <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> 
    </layout> 
</appender> 

    <root> 
    <priority value="DEBUG" /> 
    <appender-ref ref="RollingFile" /> 
    <appender-ref ref="ColoredConsoleAppender" /> 
    </root> 
</log4net> 
</configuration> 
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トレースアペンダーを無効にしてコメントアウトしていますが、実際にいくつかのインスタンスで役立っています。特に、特定のサーバーポストバックメソッドがアプリケーションのハングアップの原因となっている。

26

エンコーディングは誰も言及していません。中国語、日本語、アラビア語、または2バイト言語でメッセージをロギングする場合は、かなり重要です。ここで は一例です:

<appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> 
    <encoding value="utf-8" /> 
    <!-- etc. --> 
</appender> 
+14

非常に有用なコメントです。私はそれがデフォルトであったと思う。ただし、value = "utf-8"を使用すると、ファイルが空であってもすべてのファイルにBOMが含まれます。典型的なロギングの場合、通常は常にコンテンツがあるため、これは問題ではありません。しかし、これはエラーログや警告ログには望ましくありません。空でなければなりませんが、BOMのために1 KBのサイズで表示されるため、実際にエラーがある場合には常にチェックする必要があります。回避策は代わりにを使用することです。これにより、不要なBOMが省略されるため、空のログは0 KBとして表示されます。 – Dono

+0

素晴らしいヒント - ありがとうございます。 – nakhli

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> 

BEFORE:

2012 -06-05 10:58:40,819 [1] INFO My App [(null)] - 私のアプリ - === star ting ....

AFTER:

06/05 11:17:29,151- {INFO} - 私のApp - ===開始...

注:Apacheのドキュメントからはlog4netのために不正確であるように思われる - それとしてlog4netのは

FFF使用するのに対し、行ごとの小さな節約が大きな全体的な違い:)

+1

確かに、それはfffです! – alterfox

関連する問題