[slf4j-dev] svn commit: r646 - in slf4j/trunk/log4j-over-slf4j: . src src/main src/main/java src/main/java/org src/main/java/org/apache src/main/java/org/apache/log4j src/test src/test/java src/test/java/org src/test/java/org/apache src/test/java/org/apache/log4j
ceki at slf4j.org
ceki at slf4j.org
Mon Sep 11 22:30:22 CEST 2006
Author: ceki
Date: Mon Sep 11 22:30:22 2006
New Revision: 646
Added:
slf4j/trunk/log4j-over-slf4j/pom.xml
slf4j/trunk/log4j-over-slf4j/src/
slf4j/trunk/log4j-over-slf4j/src/main/
slf4j/trunk/log4j-over-slf4j/src/main/java/
slf4j/trunk/log4j-over-slf4j/src/main/java/org/
slf4j/trunk/log4j-over-slf4j/src/main/java/org/apache/
slf4j/trunk/log4j-over-slf4j/src/main/java/org/apache/log4j/
slf4j/trunk/log4j-over-slf4j/src/main/java/org/apache/log4j/Log4jLoggerFactory.java
slf4j/trunk/log4j-over-slf4j/src/main/java/org/apache/log4j/Logger.java
slf4j/trunk/log4j-over-slf4j/src/test/
slf4j/trunk/log4j-over-slf4j/src/test/java/
slf4j/trunk/log4j-over-slf4j/src/test/java/org/
slf4j/trunk/log4j-over-slf4j/src/test/java/org/apache/
slf4j/trunk/log4j-over-slf4j/src/test/java/org/apache/log4j/
slf4j/trunk/log4j-over-slf4j/src/test/java/org/apache/log4j/InvokeLog4jTest.java
Log:
Added: slf4j/trunk/log4j-over-slf4j/pom.xml
==============================================================================
--- (empty file)
+++ slf4j/trunk/log4j-over-slf4j/pom.xml Mon Sep 11 22:30:22 2006
@@ -0,0 +1,31 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <parent>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j</artifactId>
+ <version>1.1.0</version>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ <version>${parent.version}</version>
+ <packaging>jar</packaging>
+ <name>Log4j Implemented Over SLF4J</name>
+
+ <url>http://www.slf4j.org</url>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+
+ </dependencies>
+
+
+</project>
\ No newline at end of file
Added: slf4j/trunk/log4j-over-slf4j/src/main/java/org/apache/log4j/Log4jLoggerFactory.java
==============================================================================
--- (empty file)
+++ slf4j/trunk/log4j-over-slf4j/src/main/java/org/apache/log4j/Log4jLoggerFactory.java Mon Sep 11 22:30:22 2006
@@ -0,0 +1,38 @@
+/**
+ * Logback: the reliable, generic, fast and flexible logging framework.
+ *
+ * Copyright (C) 1999-2006, QOS.ch
+ *
+ * This library is free software, you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation.
+ */
+
+package org.apache.log4j;
+
+import java.util.Hashtable;
+
+/**
+ * This class is a factory that creates and maintains org.apache.log4j.Loggers
+ * warpping org.slf4j.Loggers.
+ *
+ * It keeps a hashtable of all created org.apache.log4j.Logger instances so that
+ * all newly created instances are not dulpicates of existing loggers.
+ *
+ * @author Sébastien Pennec
+ */
+public class Log4jLoggerFactory {
+
+ private static Hashtable log4jLoggers = new Hashtable();
+
+ public static Logger getLogger(String name) {
+ if (log4jLoggers.containsKey(name)) {
+ return (org.apache.log4j.Logger) log4jLoggers.get(name);
+ } else {
+ Logger log4jLogger = new Logger(name);
+ log4jLoggers.put(name, log4jLogger);
+ return log4jLogger;
+ }
+ }
+
+}
Added: slf4j/trunk/log4j-over-slf4j/src/main/java/org/apache/log4j/Logger.java
==============================================================================
--- (empty file)
+++ slf4j/trunk/log4j-over-slf4j/src/main/java/org/apache/log4j/Logger.java Mon Sep 11 22:30:22 2006
@@ -0,0 +1,174 @@
+/**
+ * Logback: the reliable, generic, fast and flexible logging framework.
+ *
+ * Copyright (C) 1999-2006, QOS.ch
+ *
+ * This library is free software, you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation.
+ */
+
+package org.apache.log4j;
+
+import org.slf4j.LoggerFactory;
+
+/**
+ * <p>
+ * This class is a re-implementation of the org.apache.log4j.Logger class. It
+ * uses a org.slf4j.Logger object to delegate the actual logging to a
+ * user-chosen implementation.
+ * </p>
+ * <p>
+ * Its printing methods that are shared with the
+ * org.slf4j.Logger interface redirect the logging requests to the
+ * org.slf4j.Logger. Those methods are debug, info, warn and error. However, the
+ * methods that are now present in the org.slf4j.Logger interface are not
+ * implemented. Those are the trace and fatal methods.
+ * </p>
+ *
+ * @author Sébastien Pennec
+ */
+public class Logger {
+
+ private String name;
+
+ private org.slf4j.Logger lbLogger;
+
+ protected Logger(String name) {
+ this.name = name;
+ lbLogger = LoggerFactory.getLogger(name);
+ }
+
+ public static Logger getLogger(String name) {
+ return Log4jLoggerFactory.getLogger(name);
+ }
+
+ public static Logger getLogger(Class clazz) {
+ return getLogger(clazz.getName());
+ }
+
+ public static Logger getRootLogger() {
+ return getLogger("root");
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public boolean isDebugEnabled() {
+ return lbLogger.isDebugEnabled();
+ }
+
+ public void debug(Object message) {
+ /**
+ * In the debug(Object message) method, as well as other printing methods,
+ * we consider that the message passed as a parameter is a String. Object
+ * that usually need an ObjectRenderer cannot be sent to these methods.
+ */
+ lbLogger.debug((String) message);
+ }
+
+ public void debug(Object message, Throwable t) {
+ lbLogger.debug((String) message, t);
+ }
+
+ public void debug(Object messagePattern, Object arg) {
+ lbLogger.debug((String) messagePattern, arg);
+ }
+
+ public void debug(Object messagePattern, Object arg1, Object arg2) {
+ lbLogger.debug((String) messagePattern, arg1, arg2);
+ }
+
+ public boolean isInfoEnabled() {
+ return lbLogger.isInfoEnabled();
+ }
+
+ public void info(Object message) {
+ lbLogger.info((String) message);
+ }
+
+ public void info(Object message, Throwable t) {
+ lbLogger.info((String) message, t);
+ }
+
+ public void info(Object messagePattern, Object arg) {
+ lbLogger.info((String) messagePattern, arg);
+ }
+
+ public void info(Object messagePattern, Object arg1, Object arg2) {
+ lbLogger.info((String) messagePattern, arg1, arg2);
+ }
+
+ public boolean isWarnEnabled() {
+ return lbLogger.isWarnEnabled();
+ }
+
+ public void warn(Object message) {
+ lbLogger.warn((String) message);
+ }
+
+ public void warn(Object message, Throwable t) {
+ lbLogger.warn((String) message, t);
+ }
+
+ public void warn(Object messagePattern, Object arg) {
+ lbLogger.warn((String) messagePattern, arg);
+ }
+
+ public void warn(Object messagePattern, Object arg1, Object arg2) {
+ lbLogger.warn((String) messagePattern, arg1, arg2);
+ }
+
+ public boolean isErrorEnabled() {
+ return lbLogger.isErrorEnabled();
+ }
+
+ public void error(Object message) {
+ lbLogger.error((String) message);
+ }
+
+ public void error(Object message, Throwable t) {
+ lbLogger.error((String) message, t);
+ }
+
+ public void error(Object messagePattern, Object arg) {
+ lbLogger.error((String) messagePattern, arg);
+ }
+
+ public void error(Object messagePattern, Object arg1, Object arg2) {
+ lbLogger.error((String) messagePattern, arg1, arg2);
+ }
+
+ // public void log(String fqcn, Level level, String message, Throwable t) {
+ // //FIXME improve + complete impl.
+ // Logger logger = getLogger(fqcn);
+ // if (Level.DEBUG.equals(level)) {
+ // logger.debug(message, t);
+ // } else if (Level.INFO.equals(level)) {
+ // logger.info(message, t);
+ // } else if (Level.WARN.equals(level)) {
+ // logger.info(message, t);
+ // } else if (Level.ERROR.equals(level)) {
+ // logger.info(message, t);
+ // }
+ // }
+ //
+ // public boolean isEnabledFor(Level level) {
+ // //FIXME improve + complete impl.
+ // if(Level.DEBUG.equals(level) && lbLogger.isDebugEnabled()) {
+ // return true;
+ // }
+ // if(Level.INFO.equals(level) && lbLogger.isInfoEnabled()) {
+ // return true;
+ // }
+ // if(Level.WARN.equals(level) && lbLogger.isWarnEnabled()) {
+ // return true;
+ // }
+ // if(Level.ERROR.equals(level) && lbLogger.isErrorEnabled()) {
+ // return true;
+ // }
+ // return false;
+ // }
+
+}
\ No newline at end of file
Added: slf4j/trunk/log4j-over-slf4j/src/test/java/org/apache/log4j/InvokeLog4jTest.java
==============================================================================
--- (empty file)
+++ slf4j/trunk/log4j-over-slf4j/src/test/java/org/apache/log4j/InvokeLog4jTest.java Mon Sep 11 22:30:22 2006
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2004-2006 SLF4J.ORG
+ * Copyright (c) 2004-2006 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, and/or sell copies of the Software, and to permit persons
+ * to whom the Software is furnished to do so, provided that the above
+ * copyright notice(s) and this permission notice appear in all copies of
+ * the Software and that both the above copyright notice(s) and this
+ * permission notice appear in supporting documentation.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY
+ * SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Except as contained in this notice, the name of a copyright holder
+ * shall not be used in advertising or otherwise to promote the sale, use
+ * or other dealings in this Software without prior written authorization
+ * of the copyright holder.
+ *
+ */
+
+
+package org.apache.log4j;
+
+import junit.framework.TestCase;
+
+/**
+ * A class that tests the invocation of the org.apache.log4j.Logger class
+ * that belongs to the log4j-over-slf4j package
+ *
+ * @author Sébastien Pennec
+ */
+public class InvokeLog4jTest extends TestCase {
+
+ public void testIsEnabledAPI() {
+ // assume that we are running over slf4j-simple
+ Logger log = Logger.getLogger(InvokeLog4jTest.class.getName());
+ assertFalse(log.isDebugEnabled());
+ assertTrue(log.isInfoEnabled());
+ assertTrue(log.isWarnEnabled());
+ assertTrue(log.isErrorEnabled());
+ }
+
+ public void testPrintAPI() {
+ Logger log = Logger.getLogger(InvokeLog4jTest.class.getName());
+ Exception e = new Exception("just testing");
+
+ log.debug(null);
+ log.debug("debug message");
+
+ log.info(null);
+ log.info("info message");
+
+ log.warn(null);
+ log.warn("warn message");
+
+ log.error(null);
+ log.error("error message");
+
+ log.debug(null, e);
+ log.debug("debug message", e);
+
+ log.info(null, e);
+ log.info("info message", e);
+
+ log.warn(null, e);
+ log.warn("warn message", e);
+
+ log.error(null, e);
+ log.error("error message", e);
+ }
+}
More information about the slf4j-dev
mailing list