1 package org.kuali.common.util.log.log4j.spring; 2 3 import org.apache.log4j.ConsoleAppender; 4 import org.apache.log4j.PatternLayout; 5 import org.kuali.common.util.log.log4j.DefaultLog4JService; 6 import org.kuali.common.util.log.log4j.Log4JPatternConstants; 7 import org.kuali.common.util.log.log4j.Log4JService; 8 import org.kuali.common.util.log.log4j.ParamFactory; 9 import org.kuali.common.util.log.log4j.model.Appender; 10 import org.kuali.common.util.log.log4j.model.AppenderRef; 11 import org.kuali.common.util.log.log4j.model.Layout; 12 import org.kuali.common.util.log.log4j.model.Level; 13 import org.kuali.common.util.log.log4j.model.Log4JConfiguration; 14 import org.kuali.common.util.log.log4j.model.Logger; 15 import org.kuali.common.util.log.log4j.model.Param; 16 import org.kuali.common.util.log.log4j.model.Threshold; 17 import org.kuali.common.util.xml.service.XmlService; 18 import org.kuali.common.util.xml.spring.Log4JXmlServiceConfig; 19 import org.springframework.beans.factory.annotation.Autowired; 20 import org.springframework.context.annotation.Bean; 21 import org.springframework.context.annotation.Configuration; 22 import org.springframework.context.annotation.Import; 23 24 @Configuration 25 @Import({ Log4JXmlServiceConfig.class }) 26 public class Log4JConfig { 27 28 protected static final String SPRING = "org.springframework"; 29 protected static final String JAXB = "javax.xml.bind"; 30 protected static final String STDOUT = "stdout"; 31 32 @Autowired 33 XmlService service; 34 35 @Bean 36 public Log4JService log4jService() { 37 return new DefaultLog4JService(service); 38 } 39 40 @Bean 41 public Log4JConfiguration log4JContextDefault() { 42 return getLog4JContext(Log4JPatternConstants.DEFAULT, Threshold.INFO); 43 } 44 45 @Bean 46 public Log4JConfiguration log4JContextJAXB() { 47 return getLog4JContext(Log4JPatternConstants.DEBUG, Threshold.INFO); 48 } 49 50 @Bean 51 public Log4JConfiguration log4JContextTest() { 52 return getLog4JContext(Log4JPatternConstants.DEBUG, Threshold.INFO); 53 } 54 55 @Bean 56 public Log4JConfiguration log4JContextDebug() { 57 return getLog4JContext(Log4JPatternConstants.DEBUG, Threshold.DEBUG); 58 } 59 60 @Bean 61 public Log4JConfiguration log4JContextMaven() { 62 Logger spring = new Logger(SPRING, new Level(Threshold.WARN)); 63 return getLog4JContext(Log4JPatternConstants.MAVEN, Threshold.INFO, spring); 64 } 65 66 protected Log4JConfiguration getLog4JContext(String pattern, Threshold threshold) { 67 return getLog4JContext(pattern, threshold, null); 68 } 69 70 protected Log4JConfiguration getLog4JContext(String pattern, Threshold threshold, Logger logger) { 71 Param param = ParamFactory.getPatternParam(pattern); 72 Layout layout = new Layout(PatternLayout.class, param); 73 Appender console = new Appender(STDOUT, ConsoleAppender.class, layout); 74 AppenderRef ref = new AppenderRef(console.getName()); 75 Logger root = Logger.getRootLogger(ref, new Level(threshold)); 76 if (logger == null) { 77 return new Log4JConfiguration.Builder(root).appender(console).reset(true).build(); 78 } else { 79 return new Log4JConfiguration.Builder(root).appender(console).logger(logger).reset(true).build(); 80 } 81 } 82 }