package codeine; import codeine.model.Constants; import codeine.utils.FilesUtils; import org.apache.log4j.*; import java.io.IOException; import java.lang.management.ManagementFactory; public class CodeineLogBootstrap { public void init(String componentName, String logFileName) { String logfile = Constants.getLogDir() + "/" + logFileName; setLogger(logfile); String startupMessage = "========================>>> Starting codeine " + componentName + " at version " + CodeineVersion.get() + " <<<========================\n" + "========================>>> Starting with arguments: " + ManagementFactory.getRuntimeMXBean().getInputArguments(); System.out.println(startupMessage); Logger.getRootLogger().info("\n\n\n\n\n\n\n" + startupMessage + "\n\n\n\n\n\n"); } private void setLogger(String logfile) { if (logToStdout()) { System.out.println("logging to std-out"); BasicConfigurator.configure(); Logger.getRootLogger().setLevel(Level.INFO); return; } FilesUtils.mkdirs(Constants.getLogDir()); System.out.println("writing log to " + logfile); String pattern = "%d{ISO8601} [%t] [%c{1}] %p %m %n"; PatternLayout layout = new PatternLayout(pattern); RollingFileAppender appender; try { appender = new RollingFileAppender(layout, logfile, true); } catch (IOException e) { throw new RuntimeException(e); } appender.setMaxBackupIndex(10); appender.setMaximumFileSize(10 * 1000000); Logger.getRootLogger().addAppender(appender); Logger.getRootLogger().setLevel(Level.INFO); if (System.getProperty("debug") != null && System.getProperty("debug").equals("true")) { Logger.getRootLogger().setLevel(Level.DEBUG); } } public static boolean logToStdout() { return Boolean.getBoolean("log.to.stdout"); } }