2010-11-24 18 views
1

タスク:log4j:各Appenderのプロパティのリスト?

JTextAreaに出力するようにAppenderを設定しようとしています。私はWriterAppenderがOutputStreamに書き込むことができると信じています。私はすでにJTextAreaOutputStreamクラスを生成するためにOutputStreamをサブクラス化しています。このクラスは現在System.outとSystem.errの出力をハイジャックしています。

configuratonファイル:

# 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. 

質問:私はアペンダあたりのプロパティの有効なセットを識別することができる場所

誰でも知っていますか?

答えて

2

なぜWriterAppenderにこのようなプロパティがあると思いますか?限り、私はJavaDocsから見ることができますが、そのようなプロパティを持っていません。おそらくあなたはそれをConsoleAppenderと混同していますか?

関連するJavaDoc /ソースコードを開いて、すべてのJavaBeanスタイルの設定メソッドを参照すると、のアペンドールあたりのプロパティリストが表示されます。つまり、WriterAppenderにはtargetのプロパティがある場合は、setTarget(...)セッタメソッドが必要です。とにかく

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

EDIT:あなたはおそらく、あなたのJTextAreaAppenderJTextAreaを参照して渡す必要があるような方法で、私はあなたがプログラム的にlog4jを設定することをお勧めします。または、JTextAreaへの参照がある場合は、少なくともカスタムアペンダーをプログラムで追加してください。

また、プロパティファイルを使用して設定することもできますが、最初のメッセージはJTextAreaのままにしておいてください。アプリケーションが起動してからjTextArea参照があると、プログラムによってlog4jアペンダーをすべて調べ、あなたのカスタムJTextAreaAppenderを参照してください。

+0

それは私のポイントNeemeです。私は完全に別のタイプのアペンダーからそれを盗んで、私の指を渡ってプロパティ名を推測しました。 JavaDocは、設定できるプロパティではなく、メソッド名をカバーするだけですか? – Ben

+0

これらのプロパティには魔法はありません。JavaBeansの「setterメソッド」の形でJavaDocsにすべて表示されます。 WriterAppenderには対応する「setTarget(String)」メソッドがないため、WriterAppenderには「target」プロパティがありません。 –

+0

あなたの質問に答えましたか?はいの場合は、私の答えを受け入れる;-) http://stackoverflow.com/faq#howtoask –

0

私はこれがかなり古くなっていることは知っていますが、私はちょうど午前中に同じ情報を見つけようとしているので、この質問をフォローしたいと思います。

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

これが間違っている場合は、正しい情報が見つかる場所を指摘してください。私はこの答えがそれほど簡単ではなく、明らかに見つかったのではないことに驚いています。

2

ここで私はWriterAppender構成された方法は次のとおりです。Javaコードで

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 

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

し、利用可能なプロパティのように、私はすべてが始まると思いlog4j.properties

setここに:http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/WriterAppender.html(そしてサブクラスで)

関連する問題