package edu.berkeley.thebes.common.log4j; import edu.berkeley.thebes.common.config.Config; import org.apache.log4j.Appender; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.FileAppender; import org.apache.log4j.Layout; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; import org.apache.log4j.spi.ErrorHandler; import org.apache.log4j.spi.Filter; import org.apache.log4j.spi.LoggingEvent; import java.io.File; import java.io.IOException; import java.util.Enumeration; import java.util.concurrent.atomic.AtomicBoolean; public class Log4JConfig { private static AtomicBoolean configured = new AtomicBoolean(false); public static void configureLog4J() { if (configured.getAndSet(true)) { return; } BasicConfigurator.configure(); Logger.getRootLogger().setLevel(Level.toLevel(Config.getLoggerLevel())); PatternLayout layout = new PatternLayout("%r [%t] %p %c{2} %x - %m%n"); try { File f = new File("thebes.log"); if (f.exists()) { f.delete(); } Logger.getRootLogger().addAppender(new FileAppender(layout, "thebes.log")); } catch (IOException e) { e.printStackTrace(); } Enumeration<Appender> appenders = Logger.getRootLogger().getAllAppenders(); while (appenders.hasMoreElements()) { appenders.nextElement().setLayout(layout); } } }