Actually, let's just pass the level index down to the logger implementation (as

Ray suggested). It's less code and skips the casts entirely.


git-svn-id: https://samskivert.googlecode.com/svn/trunk@2906 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
samskivert
2010-10-01 22:13:48 +00:00
parent b33c3fcbba
commit 808f05322f
3 changed files with 16 additions and 42 deletions
@@ -21,9 +21,6 @@
package com.samskivert.util; package com.samskivert.util;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.logging.Handler; import java.util.logging.Handler;
import java.util.logging.Level; import java.util.logging.Level;
@@ -113,25 +110,19 @@ public class JDK14Logger implements Logger.Factory
} }
@Override // from Logger @Override // from Logger
protected List<?> getLevels () protected boolean shouldLog (int levIdx)
{ {
return LEVELS; return _impl.isLoggable(LEVELS[levIdx]);
} }
@Override // from Logger @Override // from Logger
protected boolean shouldLog (Object level) protected void doLog (int levIdx, String formatted, Throwable throwable)
{ {
return _impl.isLoggable((Level)level); _impl.log(LEVELS[levIdx], formatted, throwable);
}
@Override // from Logger
protected void doLog (Object level, String formatted, Throwable throwable)
{
_impl.log((Level)level, formatted, throwable);
} }
protected java.util.logging.Logger _impl; protected java.util.logging.Logger _impl;
protected static final List<Level> LEVELS = Collections.unmodifiableList(Arrays.asList( protected static final Level[] LEVELS = {
Level.FINE, Level.INFO, Level.WARNING, Level.SEVERE)); Level.FINE, Level.INFO, Level.WARNING, Level.SEVERE };
} }
} }
@@ -20,10 +20,6 @@
package com.samskivert.util; package com.samskivert.util;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.apache.log4j.Level; import org.apache.log4j.Level;
/** /**
@@ -56,26 +52,20 @@ public class Log4JLogger implements Logger.Factory
} }
@Override // from Logger @Override // from Logger
protected List<?> getLevels () protected boolean shouldLog (int levIdx)
{ {
return LEVELS; return _impl.isEnabledFor(LEVELS[levIdx]);
} }
@Override // from Logger @Override // from Logger
protected boolean shouldLog (Object level) protected void doLog (int levIdx, String formatted, Throwable throwable)
{ {
return _impl.isEnabledFor((Level)level); _impl.log(_self, LEVELS[levIdx], formatted, throwable);
}
@Override // from Logger
protected void doLog (Object level, String formatted, Throwable throwable)
{
_impl.log(_self, (Level)level, formatted, throwable);
} }
protected final org.apache.log4j.Logger _impl; protected final org.apache.log4j.Logger _impl;
protected final String _self = getClass().getName(); protected final String _self = getClass().getName();
protected static final List<Level> LEVELS = Collections.unmodifiableList(Arrays.asList( protected static final Level[] LEVELS = {
Level.DEBUG, Level.INFO, Level.WARN, Level.ERROR)); Level.DEBUG, Level.INFO, Level.WARN, Level.ERROR };
} }
} }
+4 -11
View File
@@ -20,8 +20,6 @@
package com.samskivert.util; package com.samskivert.util;
import java.util.List;
/** /**
* Provides logging services to this library and others which depend on this library in such a way * Provides logging services to this library and others which depend on this library in such a way
* that they can be used in a larger project and easily be made to log to the logging framework in * that they can be used in a larger project and easily be made to log to the logging framework in
@@ -136,8 +134,7 @@ public abstract class Logger
protected void doLog (int levIdx, Object message, Object[] args) protected void doLog (int levIdx, Object message, Object[] args)
{ {
Object level = getLevels().get(levIdx); if (!shouldLog(levIdx)) {
if (!shouldLog(level)) {
return; return;
} }
Throwable err = null; Throwable err = null;
@@ -170,19 +167,15 @@ public abstract class Logger
} }
msg = buf.append(']').toString(); msg = buf.append(']').toString();
} }
doLog(level, msg, err); doLog(levIdx, msg, err);
} }
/** Returns the logger implementation specific level constants in a specific order: debug,
* info, warn, error. */
protected abstract List<?> getLevels ();
/** Returns true if a log message at the specified level should be logged. */ /** Returns true if a log message at the specified level should be logged. */
protected abstract boolean shouldLog (Object level); protected abstract boolean shouldLog (int levIdx);
/** Performs the actual logging of a message at the specified level. /** Performs the actual logging of a message at the specified level.
* @param throwable an exception that accompanies this message or null. */ * @param throwable an exception that accompanies this message or null. */
protected abstract void doLog (Object level, String formatted, Throwable throwable); protected abstract void doLog (int levIdx, String formatted, Throwable throwable);
/** /**
* Called at static initialization time. Selects and initializes our logging backend. * Called at static initialization time. Selects and initializes our logging backend.