1 22 23 package org.jboss.web.jsf.integration.config; 24 25 import java.util.HashMap ; 26 import java.util.Map ; 27 import java.util.logging.Filter ; 28 import java.util.logging.Formatter ; 29 import java.util.logging.Level ; 30 import java.util.logging.LogRecord ; 31 import java.util.logging.SimpleFormatter ; 32 import org.jboss.logging.Logger; 33 34 40 public class Log4JConversionFilter implements Filter 41 { 42 43 private Map <String , Logger> loggerCache = new HashMap <String , Logger>(); 46 47 private Formatter formatter = new SimpleFormatter (); 48 49 private boolean logConfigMessages; 52 53 public Log4JConversionFilter(boolean logConfigMessages) 54 { 55 this.logConfigMessages = logConfigMessages; 56 } 57 58 private boolean isConfigStartupMessage(LogRecord record) 59 { 60 return record.getMessage().equals("jsf.config.listener.version") || 61 record.getMessage().equals("jsf.config.listener.version.complete"); 62 } 63 64 71 public boolean isLoggable(LogRecord record) 72 { 73 if (!logConfigMessages && isConfigStartupMessage(record)) return false; 74 75 Logger logger = getLogger(record); 76 77 if (record.getThrown() != null) 78 { 79 logWithThrowable(logger, record); 80 } 81 else 82 { 83 logWithoutThrowable(logger, record); 84 } 85 86 return false; 87 } 88 89 private void logWithThrowable(Logger logger, LogRecord record) 90 { 91 int loggedLevel = record.getLevel().intValue(); 92 Object message = formatter.formatMessage(record); 93 Throwable throwable = record.getThrown(); 94 95 if (loggedLevel == Level.INFO.intValue()) 96 { 97 logger.info(message, throwable); 98 return; 99 } 100 101 if (loggedLevel == Level.WARNING.intValue()) 102 { 103 logger.warn(message, throwable); 104 return; 105 } 106 107 if (loggedLevel == Level.SEVERE.intValue()) 108 { 109 logger.fatal(message, throwable); 110 return; 111 } 112 113 logger.info(message, throwable); 114 } 115 116 private void logWithoutThrowable(Logger logger, LogRecord record) 117 { 118 int loggedLevel = record.getLevel().intValue(); 119 Object message = formatter.formatMessage(record); 120 121 if (loggedLevel == Level.INFO.intValue()) 122 { 123 logger.info(message); 124 return; 125 } 126 127 if (loggedLevel == Level.WARNING.intValue()) 128 { 129 logger.warn(message); 130 return; 131 } 132 133 if (loggedLevel == Level.SEVERE.intValue()) 134 { 135 logger.fatal(message); 136 return; 137 } 138 139 logger.info(message); 140 } 141 142 private Logger getLogger(LogRecord record) 144 { 145 String loggerName = record.getLoggerName(); 146 Logger logger = loggerCache.get(loggerName); 147 if (logger == null) 148 { 149 logger = Logger.getLogger(loggerName); 150 loggerCache.put(loggerName, logger); 151 } 152 153 return logger; 154 } 155 156 } 157 | Popular Tags |