2 * Dummy logging handler
4 * License : The MIT License
5 * Copyright(c) 2008 olyutorskii
8 package jp.sfjp.jindolf.log;
10 import java.util.Collections;
11 import java.util.LinkedList;
12 import java.util.List;
13 import java.util.logging.Handler;
14 import java.util.logging.Level;
15 import java.util.logging.LogRecord;
16 import java.util.logging.Logger;
20 * あとからなにがロギングされたのか一括して出力することができる。
22 public class PileHandler extends Handler{
24 private final List<LogRecord> logList = new LinkedList<LogRecord>();
25 private final List<LogRecord> unmodList =
26 Collections.unmodifiableList(this.logList);
37 * ロガーに含まれる{@link PileHandler}型ハンドラのリストを返す。
39 * @return {@link PileHandler}型ハンドラのリスト
41 public static List<PileHandler> getPileHandlers(Logger logger){
42 List<PileHandler> result = new LinkedList<PileHandler>();
44 for(Handler handler : logger.getHandlers()){
45 if( ! (handler instanceof PileHandler) ) continue;
46 PileHandler pileHandler = (PileHandler) handler;
47 result.add(pileHandler);
54 * ロガーに含まれる{@link PileHandler}型ハンドラを全て削除する。
57 public static void removePileHandlers(Logger logger){
58 for(PileHandler pileHandler : getPileHandlers(logger)){
59 logger.removeHandler(pileHandler);
67 * @return ログレコードのリスト。変更不可。
69 public List<LogRecord> getRecordList(){
70 return this.unmodList;
76 * @param record {@inheritDoc}
79 public void publish(LogRecord record){
80 if(record == null) return;
82 if( ! isLoggable(record) ){
86 this.logList.add(record);
111 * 他のハンドラへ蓄積したログをまとめて出力する。
112 * 最後に自分自身をクローズし、蓄積されたログを解放する。
113 * @param handler 他のハンドラ
115 public void delegate(Handler handler){
116 if(handler == this) return;
120 for(LogRecord record : this.logList){
121 handler.publish(record);
125 this.logList.clear();