2

私はそれについてグーグルで調べましたが、関連する情報を見つけることができませんでした。log4jは多数のログをサポートしておりappenders、ネット上には および に関するドキュメントConsoleAppenderがありますが、などFileAppenderのアペンダーに関する情報はほとんどまたはまったくありません。私は特に に興味があります。NullAppenderJDBCAppenderNullAppender

<appender name="???" class="org.apache.log4j.varia.NullAppender">
<appender name="???" class="org.apache.log4j.jdbc.JDBCAppender">

誰かがこれらに関する特定の情報を持っていますか? 特にNullAppender

私はここを見始めました。

4

3 に答える 3

6

の場合、NullAppender主に構成するものが何もないため、多くのドキュメントはありません。1 つを定義することができ<appender name="foo" class="org.apache.log4j.varia.NullAppender"/>、それだけです。Javadoc から:

NullAppender は存在するだけで、デバイスにメッセージを出力することはありません。

何もしない方法はそれほど多くありません。(設定をあまり変更せずに出力を破棄できるようにするために存在します。)

の場合JDBCAppender、Javadoc は次のとおりです。http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/jdbc/JDBCAppender.html
XML 構成 のparamタグは Java クラスのセッターに対応しますが、 Javadoc の上部にある大きな赤い警告に注意してください。

警告: このバージョンの JDBCAppender は、将来完全に置き換えられる可能性が非常に高いです。さらに、例外をログに記録しません。

したがって、log4j v2.0 が現在ベータ版であり、アルファ リリースをざっと見てみると、v2 には存在しないことが示されていることを考えると、依存するのに最適なクラスではない可能性があります。

于 2012-09-21T20:10:50.220 に答える
0

他の人がすでに指摘しているように、NullAppenderは基本的に何もしません。私はいくつかの詳細をレイアウトしたかっただけです。

        AppenderSkeleton は Appender {
          ...
          @オーバーライド
          パブリック同期ボイド doAppend(LoggingEvent イベント) {
            ...
          }
          ...
          abstract protected void append(LoggingEvent イベント);
        }

        public class NullAppender extends AppenderSkeleton {
          public static String s;
          パブリック文字列 t;
          ...
          @オーバーライド
          public void doAppend(LoggingEvent イベント) {
            if(レイアウト!=ヌル) {
              t = layout.format(イベント);
              s = t;
            }
          }
          @オーバーライド
          public void append(LoggingEvent イベント) {
          }

参照: Source-NullAppender & Source-AppenderSkeleton

各 log.trace/debug/... 呼び出しで何が起こるかは

-> org.apache.log4j.Category.forcedLog(String fqcn, Priority level, Object message, Throwable t)
 -> org.apache.log4j.Category.callAppenders(LoggingEvent イベント)
 -> org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(LoggingEvent event) は、そのロガー内の各アペンダーで呼び出されます
 -> org.apache.log4j.Appender.doAppend(LoggingEvent イベント)
 この場合、これは doAppend の NullPointers 実装です。

ご覧のとおり、NullAppender によって同期が取り除かれ、NullAppender.doAppend によってオーバーヘッドが発生しますが、ほとんどのシナリオではわずかです。

JDBCAppenderは使用しないでください。

       警告: このバージョンの JDBCAppender
       将来的に完全に置き換わる可能性が非常に高いです。さらに、
       例外は記録されません

参照: JDBC-Appender-Source行 34-36

の方法として、clusterlogを確認することもできます

于 2012-09-25T07:54:09.373 に答える
0

このクラスの簡単なグーグルはあなたを得るでしょう

Nullappender

したがって、基本的に NullAppender を使用すると、ログ メッセージはどこにも書き込まれません。

于 2012-09-21T19:43:32.870 に答える