Re: [slf4j-dev] 1.5.4?
Hello Thorbjørn, Thorbjørn Ravn Andersen wrote: What is your current estimate for the 1.5.6 release? I would like to get logback 0.9.12 out the door first. SLF4J 1.5.6 will come later, probably in December. /Thorbjørn -- Ceki Gülcü Logback: The reliable, generic, fast and flexible logging framework for Java. http://logback.qos.ch ___ dev mailing list dev@slf4j.org http://www.slf4j.org/mailman/listinfo/dev
[slf4j-dev] svn commit: r1235 - slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/instrumentation
Author: ravn Date: Sat Nov 15 16:05:39 2008 New Revision: 1235 Modified: slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/instrumentation/LogTransformer.java Log: Now uses domain classloader to see if slf4j is available, and only instruments if so. This allows to shorten the ignore path to just the slf4j classes. Modified: slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/instrumentation/LogTransformer.java == --- slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/instrumentation/LogTransformer.java (original) +++ slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/instrumentation/LogTransformer.java Sat Nov 15 16:05:39 2008 @@ -34,7 +34,8 @@ * Builder provides a flexible way of configuring some of many options on the * parent class instead of providing many constructors. * - * [EMAIL PROTECTED] http://rwhansen.blogspot.com/2007/07/theres-builder-pattern-that-joshua.html} + * [EMAIL PROTECTED] http + * ://rwhansen.blogspot.com/2007/07/theres-builder-pattern-that-joshua.html} * */ public static class Builder { @@ -69,11 +70,11 @@ boolean addVariableAssignment; -//private Builder addVariableAssignment(boolean b) { -// System.err.println(cannot currently log variable assignments.); -// addVariableAssignment = b; -// return this; -//} +// private Builder addVariableAssignment(boolean b) { +// System.err.println(cannot currently log variable assignments.); +// addVariableAssignment = b; +// return this; +// } boolean verbose; @@ -89,8 +90,7 @@ return this; } -String[] ignore = { sun/, java/, javax/, org/slf4j/, -ch/qos/logback/, org/apache/log4j/, apple/, com/sun/ }; +String[] ignore = {org/slf4j/}; public Builder ignore(String[] strings) { this.ignore = strings; @@ -125,9 +125,9 @@ } catch (ClassNotFoundException e) { System.err.println(s); } - + this.addEntryExit = builder.addEntryExit; -//this.addVariableAssignment = builder.addVariableAssignment; +// this.addVariableAssignment = builder.addVariableAssignment; this.verbose = builder.verbose; this.ignore = builder.ignore; this.level = builder.level; @@ -136,7 +136,7 @@ } private boolean addEntryExit; -// private boolean addVariableAssignment; + // private boolean addVariableAssignment; private boolean verbose; private String[] ignore; @@ -144,7 +144,7 @@ ProtectionDomain domain, byte[] bytes) { try { - return transform0(className, clazz, bytes); + return transform0(className, clazz, domain, bytes); } catch (Exception e) { System.err.println(Could not instrument + className); e.printStackTrace(); @@ -159,19 +159,46 @@ * * @param className * @param clazz + * @param domain * @param bytes * @return */ - private byte[] transform0(String className, Class? clazz, byte[] bytes) { -for (int i = 0; i ignore.length; i++) { - if (className.startsWith(ignore[i])) { + + private byte[] transform0(String className, Class? clazz, + ProtectionDomain domain, byte[] bytes) { + +try { + for (int i = 0; i ignore.length; i++) { +if (className.startsWith(ignore[i])) { + return bytes; +} + } + String slf4jName = org.slf4j.LoggerFactory; + try { +if (domain != null domain.getClassLoader() != null) { + domain.getClassLoader().loadClass(slf4jName); +} else { + if (verbose) { +System.err.println(Skipping + className ++ as it doesn't have a domain or a class loader.); + } + return bytes; +} + } catch (ClassNotFoundException e) { +if (verbose) { + System.err.println(Skipping + className + + as slf4j is not available to it); +} return bytes; } + if (verbose) { +System.err.println(Processing + className); + } + return doClass(className, clazz, bytes); +} catch (Throwable e) { + System.out.println(e = + e); + return bytes; } -if (verbose) { - System.err.println(Processing + className); -} -return doClass(className, clazz, bytes); } private String loggerName; @@ -197,15 +224,15 @@ if (cl.isInterface() == false) { loggerName = _log; - + // We have to declare the log variable. - + String pattern1 = private static org.slf4j.Logger {};; String loggerDefinition = format(pattern1, loggerName); CtField field = CtField.make(loggerDefinition, cl); // and assign it the appropriate value. - + String pattern2 = org.slf4j.LoggerFactory.getLogger({}.class);; String replace = name.replace('/', '.'); String getLogger = format(pattern2, replace); @@ -214,7 +241,7
[slf4j-dev] svn commit: r1236 - in slf4j/trunk: slf4j-ext slf4j-ext/src/main/java/org/slf4j/ext slf4j-ext/src/test/java/org/slf4j/dummyExt slf4j-site/src/site/pages
Author: rgoers Date: Sat Nov 15 23:10:29 2008 New Revision: 1236 Added: slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/ext/MDCStrLookup.java slf4j/trunk/slf4j-ext/src/test/java/org/slf4j/dummyExt/MDCStrLookupTest.java slf4j/trunk/slf4j-ext/src/test/java/org/slf4j/dummyExt/PackageTest.java Modified: slf4j/trunk/slf4j-ext/pom.xml slf4j/trunk/slf4j-site/src/site/pages/extensions.html Log: Add MDCStrLookup and corresponding test Modified: slf4j/trunk/slf4j-ext/pom.xml == --- slf4j/trunk/slf4j-ext/pom.xml (original) +++ slf4j/trunk/slf4j-ext/pom.xml Sat Nov 15 23:10:29 2008 @@ -34,6 +34,12 @@ artifactIdjavassist/artifactId version3.4.GA/version /dependency +dependency + groupIdcommons-lang/groupId + artifactIdcommons-lang/artifactId + version2.4/version + optionaltrue/optional +/dependency /dependencies build Added: slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/ext/MDCStrLookup.java == --- (empty file) +++ slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/ext/MDCStrLookup.java Sat Nov 15 23:10:29 2008 @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2004-2007 QOS.ch + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * Software), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY,FITNESSFORA PARTICULARPURPOSEAND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package org.slf4j.ext; + +import org.apache.commons.lang.text.StrLookup; +import org.slf4j.MDC; + + +/** + * This class can be used with the Commons Lang StrSubstitutor to replace + * tokens that occur in Strings with their values in the MDC. + * + * @author Ralph Goers + */ +public class MDCStrLookup extends StrLookup { +/** + * Looks up up a value in the MDC. + * + * @param key the key to be looked up, may be null + * @return the matching value, null if no match + */ +public String lookup(String key) { +if (key == null) { +return null; +} +return MDC.get(key); +} +} Added: slf4j/trunk/slf4j-ext/src/test/java/org/slf4j/dummyExt/MDCStrLookupTest.java == --- (empty file) +++ slf4j/trunk/slf4j-ext/src/test/java/org/slf4j/dummyExt/MDCStrLookupTest.java Sat Nov 15 23:10:29 2008 @@ -0,0 +1,33 @@ +package org.slf4j.dummyExt; + +import junit.framework.TestCase; + +import org.slf4j.MDC; +import org.slf4j.ext.MDCStrLookup; + +public class MDCStrLookupTest extends TestCase { + + +public MDCStrLookupTest(String name) { +super(name); +} + +public void setUp() throws Exception { +super.setUp(); +} + +public void tearDown() throws Exception { +super.tearDown(); +} + +public void testLookup() throws Exception { +MDC.put(key, value); +MDC.put(number, 2); +MDCStrLookup lookup = new MDCStrLookup(); +assertEquals(value, lookup.lookup(key)); +assertEquals(2, lookup.lookup(number)); +assertEquals(null, lookup.lookup(null)); +assertEquals(null, lookup.lookup()); +assertEquals(null, lookup.lookup(other)); +} +} Added: slf4j/trunk/slf4j-ext/src/test/java/org/slf4j/dummyExt/PackageTest.java == --- (empty file) +++ slf4j/trunk/slf4j-ext/src/test/java/org/slf4j/dummyExt/PackageTest.java Sat Nov 15 23:10:29 2008 @@ -0,0 +1,13 @@ +package org.slf4j.dummyExt; + +import junit.framework.*; + +public class PackageTest extends TestCase { + + public static Test suite() { +TestSuite suite = new TestSuite(); +suite.addTestSuite(MDCStrLookupTest.class); +suite.addTestSuite(XLoggerTest.class); +return suite; + } +} Modified: slf4j/trunk/slf4j-site/src/site/pages/extensions.html