diff --git a/core/java/src/net/i2p/util/LogManager.java b/core/java/src/net/i2p/util/LogManager.java index 81a61d7e61207346c4dc67eceb7e1a1f53bfb286..f736a21fc5779fb061f72e9149b7cea2957a6c69 100644 --- a/core/java/src/net/i2p/util/LogManager.java +++ b/core/java/src/net/i2p/util/LogManager.java @@ -48,18 +48,18 @@ public class LogManager { public final static String PROP_DISPLAYONSCREEN = "logger.displayOnScreen"; public final static String PROP_CONSOLEBUFFERSIZE = "logger.consoleBufferSize"; public final static String PROP_DISPLAYONSCREENLEVEL = "logger.minimumOnScreenLevel"; - public final static String PROP_DEFALTLEVEL = "logger.defaultLevel"; + public final static String PROP_DEFAULTLEVEL = "logger.defaultLevel"; public final static String PROP_RECORD_PREFIX = "logger.record."; - public final static String DEFAULT_FORMAT = DATE + ' ' + PRIORITY + " [" + THREAD + "] " + CLASS + ": " + MESSAGE; - public final static String DEFAULT_DATEFORMAT = "hh:mm:ss.SSS"; - public final static String DEFAULT_FILENAME = "log-#.txt"; + public final static String DEFAULT_FORMAT = DATE + " " + PRIORITY + " [" + THREAD + "] " + CLASS + ": " + MESSAGE; + public final static String DEFAULT_DATEFORMAT = "HH:mm:ss.SSS"; + public final static String DEFAULT_FILENAME = "logs/log-#.txt"; public final static String DEFAULT_FILESIZE = "10m"; public final static boolean DEFAULT_DISPLAYONSCREEN = true; public final static int DEFAULT_CONSOLEBUFFERSIZE = 20; public final static String DEFAULT_ROTATIONLIMIT = "2"; - public final static String DEFAULT_DEFALTLEVEL = Log.STR_DEBUG; - public final static String DEFAULT_ONSCREENLEVEL = Log.STR_DEBUG; + public final static String DEFAULT_DEFAULTLEVEL = Log.STR_ERROR; + public final static String DEFAULT_ONSCREENLEVEL = Log.STR_ERROR; private I2PAppContext _context; private Log _log; @@ -104,13 +104,16 @@ public class LogManager { private int _consoleBufferSize; /** the actual "recent logs" list */ private LogConsoleBuffer _consoleBuffer; + + private boolean _alreadyNoticedMissingConfig; public LogManager(I2PAppContext context) { _displayOnScreen = true; + _alreadyNoticedMissingConfig = false; _records = new ArrayList(); _limits = new ArrayList(128); _logs = new HashMap(128); - _defaultLimit = Log.DEBUG; + _defaultLimit = Log.ERROR; _configLastRead = 0; _location = context.getProperty(CONFIG_LOCATION_PROP, CONFIG_LOCATION_DEFAULT); _context = context; @@ -217,7 +220,8 @@ public class LogManager { */ void rereadConfig() { // perhaps check modification time - _log.debug("Rereading configuration file"); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Rereading configuration file"); loadConfig(); } @@ -230,6 +234,19 @@ public class LogManager { private void loadConfig() { File cfgFile = new File(_location); + if (!cfgFile.exists()) { + if (!_alreadyNoticedMissingConfig) { + if (_log.shouldLog(Log.ERROR)) + _log.error("Log file " + _location + " does not exist"); + System.err.println("Log file " + _location + " does not exist"); + _alreadyNoticedMissingConfig = true; + } + parseConfig(new Properties()); + updateLimits(); + return; + } + _alreadyNoticedMissingConfig = false; + if ((_configLastRead > 0) && (_configLastRead >= cfgFile.lastModified())) { if (_log.shouldLog(Log.INFO)) _log.info("Short circuiting config read (last read: " @@ -260,9 +277,9 @@ public class LogManager { } private void parseConfig(Properties config) { - String fmt = config.getProperty(PROP_FORMAT, new String(DEFAULT_FORMAT)); + String fmt = config.getProperty(PROP_FORMAT, DEFAULT_FORMAT); _format = fmt.toCharArray(); - + String df = config.getProperty(PROP_DATEFORMAT, DEFAULT_DATEFORMAT); _dateFormatPattern = df; _dateFormat = new SimpleDateFormat(df); @@ -289,13 +306,13 @@ public class LogManager { _rotationLimit = -1; try { String str = config.getProperty(PROP_ROTATIONLIMIT); - if (str == null) System.err.println("Rotation limit not specified"); _rotationLimit = Integer.parseInt(config.getProperty(PROP_ROTATIONLIMIT, DEFAULT_ROTATIONLIMIT)); } catch (NumberFormatException nfe) { System.err.println("Invalid rotation limit"); nfe.printStackTrace(); } - _defaultLimit = Log.getLevel(config.getProperty(PROP_DEFALTLEVEL, DEFAULT_DEFALTLEVEL)); + + _defaultLimit = Log.getLevel(config.getProperty(PROP_DEFAULTLEVEL, DEFAULT_DEFAULTLEVEL)); _onScreenLimit = Log.getLevel(config.getProperty(PROP_DISPLAYONSCREENLEVEL, DEFAULT_ONSCREENLEVEL)); @@ -542,7 +559,7 @@ public class LogManager { // if <= 0, dont specify buf.append(PROP_ROTATIONLIMIT).append('=').append(_rotationLimit).append('\n'); - buf.append(PROP_DEFALTLEVEL).append('=').append(Log.toLevelString(_defaultLimit)).append('\n'); + buf.append(PROP_DEFAULTLEVEL).append('=').append(Log.toLevelString(_defaultLimit)).append('\n'); buf.append(PROP_DISPLAYONSCREENLEVEL).append('=').append(Log.toLevelString(_onScreenLimit)).append('\n'); buf.append(PROP_CONSOLEBUFFERSIZE).append('=').append(_consoleBufferSize).append('\n');