Log4Jの出力をコンソールビューへ
Log4JのConsoleAppendarの出力をコンソールビューにリダイレクトしたい場合、先にLog4Jが初期化されていると、上の処理をしても、リダイレクトされない(既に初期化済だから)。
上のstreamを使ってプログラム的にAppenderを追加するか。
Logger logger = Logger.getLogger("hoge"); Layout layout = new PatternLayout("%5p %C.%M(%F:%L) - %m%n"); Appender appendar = new WriterAppender(layout, new PrintWriter(stream)); logger.addAppender(appendar);
あるいはもっかいLog4Jの初期化しなおす(この場合、前の設定は消える)。
InputStream in = SampleAction.class.getClassLoader().getResourceAsStream("log4j.properties"); Properties prop = new Properties(); prop.load(in); in.close(); PropertyConfigurator.configure(prop);
アペンダーを作って、log4jの設定ファイルに書くやり方がいいかなぁと思ったが、コンソールビューが初期化されてない状態だと、アペンダーが初期化できない(遅延初期化みたいなのができればよいが)。