==== Patch level 1 Source: 1adc4bfb-2c32-0410-81b9-bf0f0eac59bd:/lb:65074 [local] Target: f68acad3-5d13-0410-acce-bcc9b79e5f6f:/logback/trunk:1602 [mirrored] (http://svn.qos.ch/repos/logback/trunk) Log: r64609@spiceweasel: fowles | 2008-01-07 16:01:45 -0500 creating a local branch r64610@spiceweasel: fowles | 2008-01-07 17:42:28 -0500 Add system properties to control the following default configuration options: - config file - log level - use a console plugin (and port) r64663@spiceweasel: fowles | 2008-01-08 13:36:22 -0500 Fix a typo in the test (the test still fails but now it fails as expected) r65074@spiceweasel: fowles | 2008-01-14 14:33:02 -0500 add a property to allow logging to stderr === logback-classic/src/main/java/ch/qos/logback/classic/BasicConfigurator.java ================================================================== --- logback-classic/src/main/java/ch/qos/logback/classic/BasicConfigurator.java (revision 1602) +++ logback-classic/src/main/java/ch/qos/logback/classic/BasicConfigurator.java (patch logback level 1) @@ -12,6 +12,7 @@ import org.slf4j.LoggerFactory; +import ch.qos.logback.classic.joran.action.ConsolePluginAction; import ch.qos.logback.classic.spi.LoggingEvent; import ch.qos.logback.core.ConsoleAppender; import ch.qos.logback.core.status.InfoStatus; @@ -29,18 +30,32 @@ if(sm != null) { sm.add(new InfoStatus("Setting up default configuration.", hiddenSingleton)); } + + String pattern = System.getProperty("logback.default-pattern", + "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"); + PatternLayout pl = new PatternLayout(); + pl.setContext(lc); + pl.setPattern(pattern); + pl.start(); + ConsoleAppender ca = new ConsoleAppender(); ca.setContext(lc); ca.setName("console"); - PatternLayout pl = new PatternLayout(); - pl.setContext(lc); - pl.setPattern("%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"); - pl.start(); - + if(Boolean.getBoolean("logback.default-to-stderr")) { + ca.setTarget(ConsoleAppender.SYSTEM_ERR); + } ca.setLayout(pl); ca.start(); + + boolean useConsole = Boolean.getBoolean("logback.default-log-to-console"); + if(useConsole) { + ConsolePluginAction.configure(lc, Integer.getInteger("logback.default-console-port")); + } + + String level = System.getProperty("logback.default-log-level", "DEBUG"); Logger rootLogger = lc.getLogger(LoggerContext.ROOT_NAME); rootLogger.addAppender(ca); + rootLogger.setLevel(Level.toLevel(level)); } public static void configureDefaultContext() { === logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ConsolePluginAction.java ================================================================== --- logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ConsolePluginAction.java (revision 1602) +++ logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ConsolePluginAction.java (patch logback level 1) @@ -20,9 +20,7 @@ String portStr = attributes.getValue(PORT_ATTR); Integer port = null; - if (portStr == null) { - port = DEFAULT_PORT; - } else { + if (portStr != null) { try { port = Integer.valueOf(portStr); } catch (NumberFormatException ex) { @@ -32,6 +30,15 @@ } LoggerContext lc = (LoggerContext)ec.getContext(); + configure(lc, port); + addInfo("Sending LoggingEvents to the plugin using port " + port); + } + + public static void configure(LoggerContext lc, Integer port) { + if(port == null) { + port = DEFAULT_PORT; + } + SocketAppender appender = new SocketAppender(); appender.setContext(lc); appender.setIncludeCallerData(true); @@ -40,8 +47,6 @@ appender.start(); Logger root = lc.getLogger(LoggerContext.ROOT_NAME); root.addAppender(appender); - - addInfo("Sending LoggingEvents to the plugin using port " + port); } @Override === logback-classic/src/main/java/ch/qos/logback/classic/util/ContextInitializer.java ================================================================== --- logback-classic/src/main/java/ch/qos/logback/classic/util/ContextInitializer.java (revision 1602) +++ logback-classic/src/main/java/ch/qos/logback/classic/util/ContextInitializer.java (patch logback level 1) @@ -1,5 +1,6 @@ package ch.qos.logback.classic.util; +import java.net.MalformedURLException; import java.net.URL; import ch.qos.logback.classic.BasicConfigurator; @@ -25,8 +26,21 @@ public static void autoConfig(LoggerContext loggerContext, ClassLoader classLoader) throws JoranException { - URL url = Loader.getResource(TEST_AUTOCONFIG_FILE, classLoader); + URL url = null; if (url == null) { + String logbackConfigFile = System.getProperty("logback.config-file", null); + if(logbackConfigFile != null) { + try { + url = new URL(logbackConfigFile); + } catch (MalformedURLException e) { + //we tried + } + } + } + if (url == null) { + url = Loader.getResource(TEST_AUTOCONFIG_FILE, classLoader); + } + if (url == null) { url = Loader.getResource(AUTOCONFIG_FILE, classLoader); }