cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From clecl...@apache.org
Subject svn commit: r941065 - in /cxf/trunk/common/common: pom.xml src/main/java/org/apache/cxf/common/logging/Slf4jLogger.java
Date Tue, 04 May 2010 21:54:04 GMT
Author: cleclerc
Date: Tue May  4 21:54:03 2010
New Revision: 941065

URL: http://svn.apache.org/viewvc?rev=941065&view=rev
Log:
[CXF-2751] Add Slf4jLogger
Inspired by Julien Henry proposal

Added:
    cxf/trunk/common/common/src/main/java/org/apache/cxf/common/logging/Slf4jLogger.java
Modified:
    cxf/trunk/common/common/pom.xml

Modified: cxf/trunk/common/common/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/pom.xml?rev=941065&r1=941064&r2=941065&view=diff
==============================================================================
--- cxf/trunk/common/common/pom.xml (original)
+++ cxf/trunk/common/common/pom.xml Tue May  4 21:54:03 2010
@@ -95,6 +95,19 @@
         </dependency>
 
         <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <version>1.5.11</version>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>jul-to-slf4j</artifactId>
+            <version>1.5.11</version>
+            <optional>true</optional>
+        </dependency>
+
+        <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-aop</artifactId>
             <version>${spring.version}</version>

Added: cxf/trunk/common/common/src/main/java/org/apache/cxf/common/logging/Slf4jLogger.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/logging/Slf4jLogger.java?rev=941065&view=auto
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/common/logging/Slf4jLogger.java (added)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/common/logging/Slf4jLogger.java Tue
May  4 21:54:03 2010
@@ -0,0 +1,113 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.common.logging;
+
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+
+/**
+ * <p>
+ * java.util.logging.Logger implementation delegating to SLF4J.
+ * </p>
+ * <p>
+ * Methods {@link java.util.logging.Logger#setParent(Logger)}, {@link java.util.logging.Logger#getParent()},
+ * {@link java.util.logging.Logger#setUseParentHandlers(boolean)} and
+ * {@link java.util.logging.Logger#getUseParentHandlers()} are not overrriden.
+ * </p>
+ * <p>
+ * Level mapping inspired by {@link org.slf4j.bridge.SLF4JBridgeHandler}:
+ * </p>
+ * 
+ * <pre>
+ * FINEST  -&gt; TRACE
+ * FINER   -&gt; DEBUG
+ * FINE    -&gt; DEBUG
+ * CONFIG  -&gt; DEBUG
+ * INFO    -&gt; INFO
+ * WARN ING -&gt; WARN
+ * SEVER   -&gt; ERROR
+ * </pre>
+ */
+public class Slf4jLogger extends AbstractDelegatingLogger {
+
+    private final org.slf4j.Logger logger;
+
+    public Slf4jLogger(String name, String resourceBundleName) {
+        super(name, resourceBundleName);
+        logger = org.slf4j.LoggerFactory.getLogger(name);
+    }
+
+    @Override
+    public Level getLevel() {
+        Level level;
+        /*
+         * As we can use a "switch ... case" block but only a "if ... else if ..." block,
the order of the
+         * comparisons is important. We assume the the logging framework is most probably
configured at WARN
+         * DEBUG, TRACE, INFO, ... levels
+         */
+        if (logger.isWarnEnabled()) {
+            level = Level.WARNING;
+        } else if (logger.isDebugEnabled()) {
+            // map to the lowest between FINER, FINE and CONFIG
+            level = Level.FINER;
+        } else if (logger.isTraceEnabled()) {
+            level = Level.FINEST;
+        } else if (logger.isInfoEnabled()) {
+            level = Level.INFO;
+        } else if (logger.isErrorEnabled()) {
+            level = Level.SEVERE;
+        } else {
+            level = Level.OFF;
+        }
+        return level;
+    }
+
+    @Override
+    protected void internalLogFormatted(String msg, LogRecord record) {
+
+        Level level = record.getLevel();
+        Throwable t = record.getThrown();
+
+        /*
+         * As we can not use a "switch ... case" block but only a "if ... else if ..." block,
the order of the
+         * comparisons is important. We first try log level FINE then INFO, WARN, FINER,
etc
+         */
+        if (Level.FINE.equals(level)) {
+            logger.debug(msg, t);
+        } else if (Level.INFO.equals(level)) {
+            logger.info(msg, t);
+        } else if (Level.WARNING.equals(level)) {
+            logger.warn(msg, t);
+        } else if (Level.FINER.equals(level)) {
+            logger.trace(msg, t);
+        } else if (Level.FINEST.equals(level)) {
+            logger.trace(msg, t);
+        } else if (Level.ALL.equals(level)) {
+            // should never occur, all is used to configure java.util.logging
+            // but not accessible by the API Logger.xxx() API
+            logger.error(msg, t);
+        } else if (Level.SEVERE.equals(level)) {
+            logger.error(msg, t);
+        } else if (Level.CONFIG.equals(level)) {
+            logger.debug(msg, t);
+        } else if (Level.OFF.equals(level)) {
+            // don't log
+        }
+    }
+}



Mime
View raw message