001package com.hammurapi.common.concurrent;
002
003import java.util.Map;
004import java.util.concurrent.ConcurrentHashMap;
005import java.util.logging.Level;
006import java.util.logging.LogRecord;
007
008/**
009 * A wrapper for java.util.logging.Logger
010 * @author Pavel Vlasov
011 *
012 */
013public class LoggerWrapper implements Logger {
014        
015        private java.util.logging.Logger master;
016
017        public void log(LogRecord record) {
018                master.log(record);
019        }
020
021        public void log(Level level, String msg) {
022                master.log(level, msg);
023        }
024
025        public void log(Level level, String msg, Object param1) {
026                master.log(level, msg, param1);
027        }
028
029        public void log(Level level, String msg, Object[] params) {
030                master.log(level, msg, params);
031        }
032
033        public void log(Level level, String msg, Throwable thrown) {
034                master.log(level, msg, thrown);
035        }
036
037        public void severe(String msg) {
038                master.severe(msg);
039        }
040
041        public void warning(String msg) {
042                master.warning(msg);
043        }
044
045        public void fine(String msg) {
046                master.fine(msg);
047        }
048
049        public void finer(String msg) {
050                master.finer(msg);
051        }
052
053        public void finest(String msg) {
054                master.finest(msg);
055        }
056
057        public boolean isLoggable(Level level) {
058                return master.isLoggable(level);
059        }
060
061        public LoggerWrapper(java.util.logging.Logger juLogger) {
062                this.master = juLogger;
063        }
064
065        @Override
066        public void info(String msg) {
067                master.info(msg);               
068        }
069        
070        private Map<String, Logger> subLoggers = new ConcurrentHashMap<String, Logger>();
071
072        @Override
073        public Logger getLogger(String name) {
074                Logger ret = subLoggers.get(name);
075                if (ret==null) {
076                        ret = new LoggerWrapper(java.util.logging.Logger.getLogger(master.getName()+"."+name));
077                        subLoggers.put(name, ret);
078                }
079                return  ret;
080        }
081
082
083}