4 * Copyright(c) 2009 olyutorskii
\r
5 * $Id: LogWrapper.java 888 2009-11-04 06:23:35Z olyutorskii $
\r
8 package jp.sourceforge.jindolf;
\r
10 import java.util.logging.Level;
\r
11 import java.util.logging.LogRecord;
\r
12 import java.util.logging.Logger;
\r
16 * 現時点では java.util.logging のみサポート。
\r
18 public class LogWrapper{
\r
20 private final Logger jre14Logger;
\r
24 * @param logger ラップ対象のjava.util.loggingロガー
\r
26 public LogWrapper(Logger logger){
\r
28 if(logger == null) throw new NullPointerException();
\r
29 this.jre14Logger = logger;
\r
34 * ラップ対象のjava.util.loggingロガーを取得する。
\r
35 * @return ラップ対象のjava.util.loggingロガー
\r
37 public Logger getJre14Logger(){
\r
38 return this.jre14Logger;
\r
42 * ログレコードにスタックトレース情報を埋め込む。
\r
43 * @param record ログレコード
\r
45 private void fillStackInfo(LogRecord record){
\r
46 Thread selfThread = Thread.currentThread();
\r
47 StackTraceElement[] stacks = selfThread.getStackTrace();
\r
49 String thisName = this.getClass().getName();
\r
51 boolean foundMySelf = false;
\r
52 for(StackTraceElement frame : stacks){
\r
53 String frameClassName = frame.getClassName();
\r
55 if( ! foundMySelf && frameClassName.equals(thisName) ){
\r
60 if( foundMySelf && ! frameClassName.equals(thisName) ){
\r
61 record.setSourceClassName(frameClassName);
\r
62 record.setSourceMethodName(frame.getMethodName());
\r
71 * java.util.loggingロガーへログ出力。
\r
72 * @param level ログレベル
\r
75 private void logJre14(Level level, CharSequence msg){
\r
76 logJre14(level, msg, null);
\r
81 * java.util.loggingロガーへログ出力。
\r
82 * @param level ログレベル
\r
86 private void logJre14(Level level, CharSequence msg, Throwable thrown){
\r
88 if(msg == null) message = null;
\r
89 else message = msg.toString();
\r
91 LogRecord record = new LogRecord(level, message);
\r
94 record.setThrown(thrown);
\r
97 fillStackInfo(record);
\r
99 this.jre14Logger.log(record);
\r
108 public void info(CharSequence msg){
\r
109 logJre14(Level.INFO, msg);
\r
117 public void warn(CharSequence msg){
\r
127 public void warn(CharSequence msg, Throwable thrown){
\r
128 logJre14(Level.WARNING, msg, thrown);
\r
136 public void fatal(CharSequence msg){
\r
146 public void fatal(CharSequence msg, Throwable thrown){
\r
147 logJre14(Level.SEVERE, msg, thrown);
\r
151 // TODO Apache log4j サポート
\r