You have a good point. I'll remove the extraneous levels later tonight.

On 10 September 2014 18:00, Remko Popma <[email protected]> wrote:

> I see. Thanks for the clarification.
> I did not understand why we need custom log4j levels FINE and FINEST, when
> these JUL levels are mapped to DEBUG and TRACE though.
>
>
> On Wed, Sep 10, 2014 at 11:29 PM, Matt Sicker <[email protected]> wrote:
>
>> I put them in the translator in case extensions wanted to use them.
>>
>>
>> On 10 September 2014 02:15, Remko Popma <[email protected]> wrote:
>>
>>> Nice!
>>>
>>> Shall we move the remaining level constants to DefaultLevelConverter?
>>> Also, do we need to define custom log4j levels FINE and FINEST? I
>>> thought it might be good to remove them since these JUL levels already map
>>> to built-in log4j levels DEBUG and TRACE.
>>>
>>> Sent from my iPhone
>>>
>>> > On 2014/09/10, at 15:44, [email protected] wrote:
>>> >
>>> > Update LevelTranslator to use LevelConverter interface.
>>> >
>>> >
>>> > Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
>>> > Commit:
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/07e6faa3
>>> > Tree:
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/07e6faa3
>>> > Diff:
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/07e6faa3
>>> >
>>> > Branch: refs/heads/master
>>> > Commit: 07e6faa32656571f18358e834e36b0a76d9917e6
>>> > Parents: dc8be98
>>> > Author: Matt Sicker <[email protected]>
>>> > Authored: Wed Sep 10 01:39:57 2014 -0500
>>> > Committer: Matt Sicker <[email protected]>
>>> > Committed: Wed Sep 10 01:39:57 2014 -0500
>>> >
>>> > ----------------------------------------------------------------------
>>> > .../logging/log4j/jul/LevelTranslator.java      | 98
>>> ++++++--------------
>>> > .../logging/log4j/jul/LevelTranslatorTest.java  | 31 ++++---
>>> > 2 files changed, 45 insertions(+), 84 deletions(-)
>>> > ----------------------------------------------------------------------
>>> >
>>> >
>>> >
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/07e6faa3/log4j-jul/src/main/java/org/apache/logging/log4j/jul/LevelTranslator.java
>>> > ----------------------------------------------------------------------
>>> > diff --git
>>> a/log4j-jul/src/main/java/org/apache/logging/log4j/jul/LevelTranslator.java
>>> b/log4j-jul/src/main/java/org/apache/logging/log4j/jul/LevelTranslator.java
>>> > index bc83457..8df429a 100644
>>> > ---
>>> a/log4j-jul/src/main/java/org/apache/logging/log4j/jul/LevelTranslator.java
>>> > +++
>>> b/log4j-jul/src/main/java/org/apache/logging/log4j/jul/LevelTranslator.java
>>> > @@ -17,10 +17,11 @@
>>> >
>>> > package org.apache.logging.log4j.jul;
>>> >
>>> > -import java.util.IdentityHashMap;
>>> > -import java.util.Map;
>>> > -
>>> > import org.apache.logging.log4j.Level;
>>> > +import org.apache.logging.log4j.Logger;
>>> > +import org.apache.logging.log4j.status.StatusLogger;
>>> > +import org.apache.logging.log4j.util.LoaderUtil;
>>> > +import org.apache.logging.log4j.util.PropertiesUtil;
>>> >
>>> > /**
>>> >  * Utility class to convert between JDK Levels and Log4j 2 Levels.
>>> > @@ -29,37 +30,31 @@ import org.apache.logging.log4j.Level;
>>> >  */
>>> > public final class LevelTranslator {
>>> >
>>> > -    private static final int JDK_SEVERE =
>>> java.util.logging.Level.SEVERE.intValue();    // ERROR
>>> > -    private static final int JDK_WARNING =
>>> java.util.logging.Level.WARNING.intValue();  // WARN
>>> > -    private static final int JDK_INFO =
>>> java.util.logging.Level.INFO.intValue();        // INFO
>>> > -    private static final int JDK_CONFIG =
>>> java.util.logging.Level.CONFIG.intValue();    // INFO
>>> > -    private static final int JDK_FINE =
>>> java.util.logging.Level.FINE.intValue();        // DEBUG
>>> > -    private static final int JDK_FINER =
>>> java.util.logging.Level.FINER.intValue();      // DEBUG
>>> > -    private static final int JDK_FINEST =
>>> java.util.logging.Level.FINEST.intValue();    // TRACE
>>> > +    public static final String LEVEL_CONVERTER_PROPERTY =
>>> "log4j.jul.levelConverter";
>>> > +
>>> > +    public static final Level FINEST = Level.forName("FINEST",
>>> Level.TRACE.intLevel() + 100);
>>> > +    public static final Level FINER = Level.forName("FINER",
>>> Level.TRACE.intLevel());
>>> > +    public static final Level FINE = Level.forName("FINE",
>>> Level.DEBUG.intLevel());
>>> > +    public static final Level CONFIG = Level.forName("CONFIG",
>>> Level.INFO.intLevel() + 50);
>>> >
>>> > -    // standard level mappings
>>> > -    private static final Map<java.util.logging.Level, Level>
>>> JDK_TO_LOG4J =
>>> > -        new IdentityHashMap<java.util.logging.Level, Level>(10);
>>> > -    private static final Map<Level, java.util.logging.Level>
>>> LOG4J_TO_JDK =
>>> > -        new IdentityHashMap<Level, java.util.logging.Level>(10);
>>> > +    private static final Logger LOGGER = StatusLogger.getLogger();
>>> > +    private static final LevelConverter LEVEL_CONVERTER;
>>> >
>>> >     static {
>>> > -        JDK_TO_LOG4J.put(java.util.logging.Level.OFF, Level.OFF);
>>> > -        JDK_TO_LOG4J.put(java.util.logging.Level.FINEST, Level.TRACE);
>>> > -        JDK_TO_LOG4J.put(java.util.logging.Level.FINER, Level.DEBUG);
>>> > -        JDK_TO_LOG4J.put(java.util.logging.Level.FINE, Level.DEBUG);
>>> > -        JDK_TO_LOG4J.put(java.util.logging.Level.CONFIG, Level.INFO);
>>> > -        JDK_TO_LOG4J.put(java.util.logging.Level.INFO, Level.INFO);
>>> > -        JDK_TO_LOG4J.put(java.util.logging.Level.WARNING, Level.WARN);
>>> > -        JDK_TO_LOG4J.put(java.util.logging.Level.SEVERE, Level.ERROR);
>>> > -        JDK_TO_LOG4J.put(java.util.logging.Level.ALL, Level.ALL);
>>> > -        LOG4J_TO_JDK.put(Level.OFF, java.util.logging.Level.OFF);
>>> > -        LOG4J_TO_JDK.put(Level.TRACE, java.util.logging.Level.FINEST);
>>> > -        LOG4J_TO_JDK.put(Level.DEBUG, java.util.logging.Level.FINE);
>>> > -        LOG4J_TO_JDK.put(Level.INFO, java.util.logging.Level.INFO);
>>> > -        LOG4J_TO_JDK.put(Level.WARN, java.util.logging.Level.WARNING);
>>> > -        LOG4J_TO_JDK.put(Level.ERROR, java.util.logging.Level.SEVERE);
>>> > -        LOG4J_TO_JDK.put(Level.ALL, java.util.logging.Level.ALL);
>>> > +        final String levelConverterClassName =
>>> > +
>>> PropertiesUtil.getProperties().getStringProperty(LEVEL_CONVERTER_PROPERTY);
>>> > +        if (levelConverterClassName != null) {
>>> > +            LevelConverter levelConverter;
>>> > +            try {
>>> > +                levelConverter =
>>> LoaderUtil.newCheckedInstanceOf(levelConverterClassName,
>>> LevelConverter.class);
>>> > +            } catch (final Exception e) {
>>> > +                LOGGER.error("Could not create custom LevelConverter
>>> [{}].", levelConverterClassName, e);
>>> > +                levelConverter = new DefaultLevelConverter();
>>> > +            }
>>> > +            LEVEL_CONVERTER = levelConverter;
>>> > +        } else {
>>> > +            LEVEL_CONVERTER = new DefaultLevelConverter();
>>> > +        }
>>> >     }
>>> >
>>> >     /**
>>> > @@ -69,40 +64,7 @@ public final class LevelTranslator {
>>> >      * @return converted Level.
>>> >      */
>>> >     public static Level toLevel(final java.util.logging.Level level) {
>>> > -        final Level standardLevel = JDK_TO_LOG4J.get(level);
>>> > -        if (standardLevel != null) {
>>> > -            return standardLevel;
>>> > -        }
>>> > -        final int value = level.intValue();
>>> > -        if (value == Integer.MAX_VALUE) {
>>> > -            return Level.OFF;
>>> > -        }
>>> > -        if (value == Integer.MIN_VALUE) {
>>> > -            return Level.ALL;
>>> > -        }
>>> > -        if (value <= JDK_FINEST) { // up to 300
>>> > -            return Level.TRACE;
>>> > -        }
>>> > -        if (value <= JDK_FINER) { // 301 to 400
>>> > -            return Level.DEBUG;
>>> > -        }
>>> > -        if (value <= JDK_FINE) { // 401 to 500
>>> > -            return Level.DEBUG;
>>> > -        }
>>> > -        if (value <= JDK_CONFIG) { // 501 to 700
>>> > -            return Level.INFO;
>>> > -        }
>>> > -        if (value <= JDK_INFO) { // 701 to 800
>>> > -            return Level.INFO;
>>> > -        }
>>> > -        if (value <= JDK_WARNING) { // 801 to 900
>>> > -            return Level.WARN;
>>> > -        }
>>> > -        if (value <= JDK_SEVERE) { // 901 to 1000
>>> > -            return Level.ERROR;
>>> > -        }
>>> > -        // 1001+
>>> > -        return Level.FATAL;
>>> > +        return LEVEL_CONVERTER.toLevel(level);
>>> >     }
>>> >
>>> >     /**
>>> > @@ -112,11 +74,7 @@ public final class LevelTranslator {
>>> >      * @return converted Level.
>>> >      */
>>> >     public static java.util.logging.Level toJavaLevel(final Level
>>> level) {
>>> > -        final java.util.logging.Level standardLevel =
>>> LOG4J_TO_JDK.get(level);
>>> > -        if (standardLevel != null) {
>>> > -            return standardLevel;
>>> > -        }
>>> > -        return java.util.logging.Level.parse(level.name());
>>> > +        return LEVEL_CONVERTER.toJavaLevel(level);
>>> >     }
>>> >
>>> >     private LevelTranslator() {
>>> >
>>> >
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/07e6faa3/log4j-jul/src/test/java/org/apache/logging/log4j/jul/LevelTranslatorTest.java
>>> > ----------------------------------------------------------------------
>>> > diff --git
>>> a/log4j-jul/src/test/java/org/apache/logging/log4j/jul/LevelTranslatorTest.java
>>> b/log4j-jul/src/test/java/org/apache/logging/log4j/jul/LevelTranslatorTest.java
>>> > index 744e296..3ab5e92 100644
>>> > ---
>>> a/log4j-jul/src/test/java/org/apache/logging/log4j/jul/LevelTranslatorTest.java
>>> > +++
>>> b/log4j-jul/src/test/java/org/apache/logging/log4j/jul/LevelTranslatorTest.java
>>> > @@ -30,37 +30,40 @@ import static org.junit.Assert.*;
>>> > @RunWith(Parameterized.class)
>>> > public class LevelTranslatorTest {
>>> >
>>> > -    private final java.util.logging.Level level;
>>> > -    private final Level expectedLevel;
>>> > +    private final java.util.logging.Level javaLevel;
>>> > +    private final Level log4jLevel;
>>> >
>>> > -    public LevelTranslatorTest(final java.util.logging.Level level,
>>> final Level expectedLevel) {
>>> > -        this.level = level;
>>> > -        this.expectedLevel = expectedLevel;
>>> > +    public LevelTranslatorTest(final java.util.logging.Level
>>> javaLevel, final Level log4jLevel) {
>>> > +        this.javaLevel = javaLevel;
>>> > +        this.log4jLevel = log4jLevel;
>>> >     }
>>> >
>>> >     @Parameterized.Parameters
>>> >     public static Collection<Object[]> data() {
>>> >         return Arrays.asList(
>>> >             new Object[][]{
>>> > -                {CustomJdkLevel.TEST, Level.INFO},
>>> > -                {CustomJdkLevel.DEFCON_2, Level.ERROR},
>>> > -                {CustomJdkLevel.DEFCON_1, Level.FATAL},
>>> >                 {java.util.logging.Level.OFF, Level.OFF},
>>> >                 {java.util.logging.Level.ALL, Level.ALL},
>>> >                 {java.util.logging.Level.SEVERE, Level.ERROR},
>>> >                 {java.util.logging.Level.WARNING, Level.WARN},
>>> >                 {java.util.logging.Level.INFO, Level.INFO},
>>> > -                {java.util.logging.Level.CONFIG, Level.INFO},
>>> > -                {java.util.logging.Level.FINE, Level.DEBUG},
>>> > -                {java.util.logging.Level.FINER, Level.DEBUG},
>>> > -                {java.util.logging.Level.FINEST, Level.TRACE}
>>> > +                {java.util.logging.Level.CONFIG,
>>> LevelTranslator.CONFIG},
>>> > +                {java.util.logging.Level.FINE, LevelTranslator.FINE},
>>> > +                {java.util.logging.Level.FINER,
>>> LevelTranslator.FINER},
>>> > +                {java.util.logging.Level.FINEST,
>>> LevelTranslator.FINEST}
>>> >             }
>>> >         );
>>> >     }
>>> >
>>> >     @Test
>>> >     public void testToLevel() throws Exception {
>>> > -        final Level actualLevel = LevelTranslator.toLevel(level);
>>> > -        assertEquals(expectedLevel, actualLevel);
>>> > +        final Level actualLevel = LevelTranslator.toLevel(javaLevel);
>>> > +        assertEquals(log4jLevel, actualLevel);
>>> > +    }
>>> > +
>>> > +    @Test
>>> > +    public void testToJavaLevel() throws Exception {
>>> > +        final java.util.logging.Level actualLevel =
>>> LevelTranslator.toJavaLevel(log4jLevel);
>>> > +        assertEquals(javaLevel, actualLevel);
>>> >     }
>>> > }
>>> > \ No newline at end of file
>>> >
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [email protected]
>>> For additional commands, e-mail: [email protected]
>>>
>>>
>>
>>
>> --
>> Matt Sicker <[email protected]>
>>
>
>


-- 
Matt Sicker <[email protected]>

Reply via email to