Skip to content

Commit

Permalink
abstract log levels
Browse files Browse the repository at this point in the history
  • Loading branch information
edeso committed May 5, 2022
1 parent 2196719 commit 4d40782
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 15 deletions.
62 changes: 48 additions & 14 deletions src/com/vividsolutions/jump/workbench/Logger.java
Expand Up @@ -3,14 +3,14 @@
import java.io.File;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;
import java.util.List;

import org.apache.log4j.Appender;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.PatternLayout;

import com.vividsolutions.jump.workbench.ui.plugin.GenerateLogPlugIn;
Expand All @@ -27,6 +27,25 @@
*/
public class Logger {

public static class Level {
private String VALUE = "";

private Level(String value) {
VALUE = value;
}

public String toString() {
return VALUE;
}

final static public Level FATAL = new Level("FATAL");
final static public Level ERROR = new Level("ERROR");
final static public Level WARN = new Level("WARN");
final static public Level INFO = new Level("INFO");
final static public Level DEBUG = new Level("DEBUG");
final static public Level TRACE = new Level("TRACE");
}

private static boolean initialized = false;

private static void init(){
Expand Down Expand Up @@ -120,7 +139,7 @@ public static void trace(String msg, Throwable t) {
* @param msg message to log
* @param t throwable to log
* @param logLevel log level of the message
* @param calledFrom Exception stacktracle
* @param calledFrom Exception stacktrace
*/
public static void log(String msg, Throwable t, Level logLevel,
StackTraceElement calledFrom) {
Expand All @@ -138,11 +157,11 @@ public static void log(String msg, Throwable t, Level logLevel,
init();

// what's the current log level?
Level loggerLevel = logger.getEffectiveLevel();
org.apache.log4j.Level loggerLevel = logger.getEffectiveLevel();

// only append code:line during debugging
String msgAppend = "";
if (element != null && !loggerLevel.isGreaterOrEqual(Level.INFO))
if (element != null && !loggerLevel.isGreaterOrEqual(org.apache.log4j.Level.INFO))
msgAppend = " at " + element + "";

// empty log messages provoke this error line for devs to fix the cause
Expand All @@ -162,7 +181,7 @@ public static void log(String msg, Throwable t, Level logLevel,
msg = t.getClass().getName();
}

logger.log(logLevel, msg + msgAppend, t);
logger.log(toLevel(logLevel), msg + msgAppend, t);
}

private static StackTraceElement getCaller(StackTraceElement calledFrom) {
Expand Down Expand Up @@ -222,7 +241,10 @@ public static List<File> getLogFiles() {
* @param levelString a string representing the LogLevel
*/
public static void setLevel(String levelString) {
Level level = org.apache.log4j.Level.toLevel(levelString);
if (! Arrays.stream(Level.class.getFields()).anyMatch( f -> f.getName().equalsIgnoreCase(levelString) ))
throw new IllegalArgumentException("unknown log verbosity level.");

org.apache.log4j.Level level = org.apache.log4j.Level.toLevel(levelString);
if (level.equals(Level.DEBUG) && !levelString.equalsIgnoreCase("debug"))
throw new IllegalArgumentException("unknown log verbosity level.");

Expand All @@ -231,6 +253,18 @@ public static void setLevel(String levelString) {
info(new MessageFormat("Setting log level to {0}").format(new Object[]{level}));
}

private static org.apache.log4j.Level toLevel( Level level ) {
return org.apache.log4j.Level.toLevel(level.VALUE);
}

private static Level toLevel( org.apache.log4j.Level level ) {
try {
return (Level) Level.class.getDeclaredField(level.toString().toUpperCase()).get(null);
}catch (Exception e) {
throw new IllegalArgumentException("unknown log verbosity level.", e);
}
}

/**
* @return the current log level for the calling class
*/
Expand All @@ -239,10 +273,10 @@ public static Level getLevel() {
StackTraceElement element = getCaller(new Exception().getStackTrace()[0]);
org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(element
.getClassName());
return logger.getEffectiveLevel();
return toLevel(logger.getEffectiveLevel());
}

private static boolean isLoggerLevelEnabled(Level level) {
private static boolean isLoggerLevelEnabled(org.apache.log4j.Level level) {
// get caller, this time 2 stack entries away
StackTraceElement element = getCaller(new Exception().getStackTrace()[1]);
org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(element
Expand All @@ -251,27 +285,27 @@ private static boolean isLoggerLevelEnabled(Level level) {
}

public static boolean isFatalEnabled() {
return isLoggerLevelEnabled(Level.FATAL);
return isLoggerLevelEnabled(org.apache.log4j.Level.FATAL);
}

public static boolean isErrorEnabled() {
return isLoggerLevelEnabled(Level.ERROR);
return isLoggerLevelEnabled(org.apache.log4j.Level.ERROR);
}

public static boolean isWarnEnabled() {
return isLoggerLevelEnabled(Level.WARN);
return isLoggerLevelEnabled(org.apache.log4j.Level.WARN);
}

public static boolean isInfoEnabled() {
return isLoggerLevelEnabled(Level.INFO);
return isLoggerLevelEnabled(org.apache.log4j.Level.INFO);
}

public static boolean isDebugEnabled() {
return isLoggerLevelEnabled(Level.DEBUG);
return isLoggerLevelEnabled(org.apache.log4j.Level.DEBUG);
}

public static boolean isTraceEnabled() {
return isLoggerLevelEnabled(Level.TRACE);
return isLoggerLevelEnabled(org.apache.log4j.Level.TRACE);
}

}
Expand Up @@ -637,7 +637,7 @@ public void log(String message, Throwable t) {
}

private void log(String message, Throwable t, StackTraceElement calledFrom) {
Logger.log(message, Logger.isDebugEnabled() ? t : null, Level.INFO, calledFrom);
Logger.log(message, Logger.isDebugEnabled() ? t : null, Logger.Level.INFO, calledFrom);
}

public void setMinimumFeatureExtentForAnyRenderingInPixels(
Expand Down

0 comments on commit 4d40782

Please sign in to comment.