2

タスク:

JTextArea に出力するように Appender を構成しようとしています。WriterAppender は OutputStream に書き込むことができると思います。すでに OutputStream をサブクラス化して JTextAreaOutputStream クラスを生成しています。現在、このクラスは、System.out および System.err からの出力をハイジャックすることによって取り込まれています。

構成ファイル:

    # File appender for the GUI screen
    log4j.appender.gui = org.apache.log4j.WriterAppender
    log4j.appender.gui.Target=project.gui.GUIView.logWindow   //logWindow is the name of my JTextArea

    # Root logger option
    log4j.rootLogger=INFO, gui

エラー:

log4j:WARN No such property [target] in org.apache.log4j.WriterAppender.

質問:

アペンダーごとに有効なプロパティのセットを特定できる場所を知っている人はいますか?

4

3 に答える 3

2

なぜWriterAppenderにそのようなプロパティがあると思いますか? JavaDocsからわかる限り、そのようなプロパティはありません。たぶん、 ConsoleAppenderと混同していますか?

関連する JavaDoc/ソース コードを開いてすべての JavaBean スタイルのセッター メソッドを検索すると、アペンダーごとのプロパティの一覧を取得できます。これは、プロパティがある場合WriterAppender、setter メソッドtargetが必要であることを意味します。setTarget(...)

とにかく、カスタムをスーパークラスに渡す独自のサブクラスWriterAppenderを作成して作成することをお勧めします。このようなサブクラスのサンプルについては、ConsoleAppenderおよびFileAppenderを参照してください。JTextAreaAppenderOutputStream

EDIT:ちなみに、おそらくあなたのへの参照を渡す必要があるのでJTextAreaJTextAreaAppenderプログラムでlog4jを設定することをお勧めします。または、 への参照を取得した後、少なくともカスタムアペンダーをプログラムで追加しJTextAreaます

または、さらに良いことに、プロパティ ファイルを介して構成することもできますが、最初のJTextArea参照は null のままにしておきます。アプリケーションが起動してjTextArea参照が得られたら、プログラムですべての log4j アペンダーを調べて、参照を custom に渡すことができますJTextAreaAppender

于 2010-11-24T16:27:21.983 に答える
2

WriterAppender の構成方法は次のとおりです。

log4j.properties:

log4j.rootLogger=INFO, ConsoleAppenderInstance,FileAppenderInstance, WriterAppenderInstance
...
log4j.appender.WriterAppenderInstance=org.apache.log4j.WriterAppender
log4j.appender.WriterAppenderInstance.layout=org.apache.log4j.PatternLayout
log4j.appender.WriterAppenderInstance.layout.ConversionPattern=%m%n

Java コードの場合:

StringWriter writer = new StringWriter();
Logger root = Logger.getRootLogger();
WriterAppender app = (WriterAppender)root.getAppender("WriterAppenderInstance");
app.setWriter(writer);
...
writer.toString()

利用可能なプロパティについては、ここから始まるすべてを推測しsetます: http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/WriterAppender.html (およびサブクラス)

于 2012-09-17T15:09:04.120 に答える
0

これはかなり古いことは知っていますが、同じ情報を見つけるために午前中ずっと過ごしたので、この質問をフォローアップしたかっただけです。

log4j WriterAppenderには構成可能なオプションがないため、外部構成ファイルで構成することはできません。このクラスはWriterまたはに書き込むように設計されOutputStreamており、文字列ベースの構成ファイルでそのオブジェクトを指定する方法はありません。

これが正しくない場合は、私を訂正して、正しい情報が見つかる場所を教えてください。この答えがそのままでは簡単に、そして明らかに見つけられないことに、私はちょっと驚いています。

于 2012-04-24T19:31:11.670 に答える