package logger; import java.io.IOException; import java.util.Enumeration; import org.apache.log4j.Category; import org.apache.log4j.FileAppender; import org.apache.log4j.Level; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.apache.log4j.Priority; import org.apache.log4j.SimpleLayout; /** * PjiitLogger implements standard wrap-around for Java Logger * adds methods for initiation, logging with different * importance, also provide special method *sanity_check* * to log only important messages in compliance with simulation * model description. * * @version 1.1 * @since model_taskset_description.docx * * @author Oskar Jarczyk * @since 1.0 */ public class PjiitLogger { /** * TODO: rewrite to use log4j configuration file instead * of manually coding appenders ! */ public static Logger logger = null; public static void init() throws IOException{ init(Level.ALL); } public static void init(Level level) throws IOException{ logger = getRootLogger(); SimpleLayout layout = new SimpleLayout(); FileAppender appender = new FileAppender(layout, "simulation_logs.txt",false); logger.addAppender(appender); setLevel(level); dumpAll(); } private static void dumpAll(){ Enumeration<Category> loggers = LogManager.getCurrentLoggers(); while (loggers.hasMoreElements()){ Category e = loggers.nextElement(); info(e.getName()); } } // Creation & retrieval methods: public static Logger getRootLogger() { return Logger.getRootLogger(); } public static void setLevel(Level level){ logger.setLevel(level); } public static Logger getLogger(String name) { return Logger.getLogger(name); } // printing methods: public static void trace(String message) { logger.log(Priority.INFO, message); } public static void debug(Object message) { logger.log(Priority.DEBUG, message); } public static void info(String message) { logger.log(Priority.INFO, message); } public static void warn(Object message) { logger.log(Priority.WARN, message); } public static void error(Object message) { logger.log(Priority.ERROR, message); } public static void fatal(Object message) { logger.log(Priority.FATAL, message); } // generic printing method: public static void log(Level l, Object message) { logger.log(Priority.INFO, message); } }