All~
My company StreamBase (www.streambase.com) is planning on using slf4j and
logback for its logging solution. However, we have needed to extend it to
provide slightly more flexible default configuration. These are important
to us as they provide us with needed flexibility in changing the log level
easily for various debugging and testing situations.
The attached patch adds support for some basic configuration via system
properties. Including properties to control the following options:
- config file
- log level
- use a console plugin (and port)
Suggestions or improvements welcome,
Matt
==== Patch <log-property-config> level 1
Source: 1adc4bfb-2c32-0410-81b9-bf0f0eac59bd:/lb:64610
Target: f68acad3-5d13-0410-acce-bcc9b79e5f6f:/logback/trunk:1602
(http://svn.qos.ch/repos/logback/trunk)
Log:
[EMAIL PROTECTED]: fowles | 2008-01-07 16:01:45 -0500
creating a local branch
[EMAIL PROTECTED]: 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)
=== 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 log-property-config level 1)
@@ -12,6 +12,8 @@
import org.slf4j.LoggerFactory;
+import ch.qos.logback.classic.filter.ThresholdFilter;
+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;
@@ -32,15 +34,26 @@
ConsoleAppender<LoggingEvent> ca = new ConsoleAppender<LoggingEvent>();
ca.setContext(lc);
ca.setName("console");
+
+ 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("%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n");
+ pl.setPattern(pattern);
pl.start();
-
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 log-property-config 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 log-property-config 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);
}
==== BEGIN SVK PATCH BLOCK ====
Version: svk v2.0.2 (linux)
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
sHuorP4dWAh+kw==
==== END SVK PATCH BLOCK ====
_______________________________________________
logback-dev mailing list
[email protected]
http://qos.ch/mailman/listinfo/logback-dev