2017-03-09 5 views
0

コンソールに印刷するか、ファイルに書き込むのではなく、すべてのログ(メッセージ)を次のようにJavaオブジェクトのStringコレクションに収集します:log4jから1つのjavaオブジェクトにログ(メッセージ)を集めることができます

class LogCollector { 
    List<String> messages; 
} 

これで、カスタムHTMLレポートを生成するのが簡単になりました(いくつかのメソッドに "LogCollector"オブジェクトを渡すだけです)。これをLog4Jで実装できるのが望ましいでしょう。

より詳細な問題: 私はいくつかのクラス「LoggingPart」を作りたい:私はすべての作成カスタムTestNGのリスナーの中で、多くのことを推奨されているが、解決策は本当に簡単です

class LoggingPart { 
    String name; 
    List<String> messages; 
    List<LoggingPart> parts = new ArrayList<>(); 

    public static void start(String name) { 
     parts.add(new LoggingPart(name)); 

     /* Logic that after every call LoggingPart.start("someName") */ 
     /* in some other class will start collecting messages from */ 
     /* logger into LoggingPart instance of name "someName"  */ 

     /* Report will be generated only of messages from particular */ 
     /* instance with specified name        */ 
    } 
} 
+0

ここを見てください:https://www.tutorialspoint.com/log4j/log4j_htmllayout.htm あなたは何をしたいのですか? –

+0

確かにそうではありませんが、興味深い解決策にリダイレクトされました.HtmlLayoutのメソッドフォーマットをオーバーライドしていますが、この[link](http://stackoverflow.com/questions/12583374/how-to-change-the-htmllayout-in -log4j)。 私は、この場合、log4jによって生成されたHTMLを取り込み、必要な情報(ログメッセージ)を(正規表現を介して)プルし、必要な方法でフォーマットします。その "牽引"のステップをスキップして、それらのメッセージを直接取得する方法はありますか? – milosdju

答えて

0

:作ります追加のlog4jアペンダ:

  1. カスタム追加への参照を作成しますlog4jの設定ファイル(log4j.properties)
  2. でアペンダを追加します。ログを処理するメソッドを含むクラス。
関連する問題