From 110c49504f87c025423c923500bd52ea4615b33b Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Tue, 30 Jul 2013 20:42:02 +1200 Subject: Improve logging system (fix #278) --- src/org/traccar/helper/Log.java | 90 ++++++++++++++++++++++++++++------------- 1 file changed, 62 insertions(+), 28 deletions(-) (limited to 'src/org/traccar/helper/Log.java') diff --git a/src/org/traccar/helper/Log.java b/src/org/traccar/helper/Log.java index 983171b72..4cd61b933 100644 --- a/src/org/traccar/helper/Log.java +++ b/src/org/traccar/helper/Log.java @@ -1,5 +1,5 @@ /* - * Copyright 2012 Anton Tananaev (anton.tananaev@gmail.com) + * Copyright 2012 - 2013 Anton Tananaev (anton.tananaev@gmail.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,53 +15,87 @@ */ package org.traccar.helper; -import java.util.logging.Level; -import java.util.logging.Logger; +import java.io.IOException; +import java.util.Properties; +import org.apache.log4j.Appender; +import org.apache.log4j.DailyRollingFileAppender; +import org.apache.log4j.Layout; +import org.apache.log4j.Level; +import org.apache.log4j.LogManager; +import org.apache.log4j.Logger; +import org.apache.log4j.PatternLayout; -/** - * Logger - */ public class Log { - private static final String TRACCAR_LOGGER_NAME = "traccar"; - private static Logger logger = null; + + public static void setupLogger(Properties properties) throws IOException { + if (Boolean.valueOf(properties.getProperty("logger.enable"))) { + + Layout layout = new PatternLayout( + "%d{yyyy-MM-dd HH:mm:ss} %5p: %m%n"); + + Appender appender = new DailyRollingFileAppender( + layout, properties.getProperty("logger.file"), "'.'yyyyMMdd"); + + LogManager.resetConfiguration(); + logger = Logger.getRootLogger(); + logger.addAppender(appender); + logger.setLevel(Level.DEBUG); + } + } - /** - * Return global logger - */ public static Logger getLogger() { if (logger == null) { - logger = Logger.getLogger(TRACCAR_LOGGER_NAME); - logger.setUseParentHandlers(false); - logger.setLevel(Level.ALL); + logger = Logger.getRootLogger(); + logger.setLevel(Level.OFF); } return logger; } - private static void write(Level level, String msg) { - StackTraceElement[] stack = Thread.currentThread().getStackTrace(); - if (stack != null && stack.length > 3) { - getLogger().logp(level, stack[3].getClassName(), stack[3].getMethodName(), msg); - } else { - getLogger().log(level, msg); - } + public static void error(String msg) { + getLogger().error(msg); } - public static void severe(String msg) { - write(Level.SEVERE, msg); + public static void warning(String msg) { + getLogger().warn(msg); } - public static void warning(String msg) { - write(Level.WARNING, msg); + public static void warning(Throwable exception) { + warning(null, exception); + } + + public static void warning(String msg, Throwable exception) { + StringBuilder s = new StringBuilder(); + if (msg != null) { + s.append(msg); + s.append(" - "); + } + if (exception != null) { + String exceptionMsg = exception.getMessage(); + if (exceptionMsg != null) { + s.append(exceptionMsg); + s.append(" - "); + } + s.append(exception.getClass().getName()); + StackTraceElement[] stack = exception.getStackTrace(); + if (stack.length > 0) { + s.append(" ("); + s.append(stack[0].getFileName()); + s.append(":"); + s.append(stack[0].getLineNumber()); + s.append(")"); + } + } + getLogger().warn(s.toString()); } public static void info(String msg) { - write(Level.INFO, msg); + getLogger().info(msg); } - public static void fine(String msg) { - write(Level.FINE, msg); + public static void debug(String msg) { + getLogger().debug(msg); } } -- cgit v1.2.3