common-utils/src/main/java/org/warp/commonutils/log/Logs.java

103 lines
2.2 KiB
Java

package org.warp.commonutils.log;
import org.slf4j.Logger;
public class Logs {
private static volatile boolean initialized;
private static boolean traceEnabled;
private static boolean debugEnabled;
private static boolean infoEnabled;
private static boolean warnEnabled;
private static Level rootLevel;
private static void initialize() {
var logger = org.slf4j.LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
traceEnabled = logger.isTraceEnabled();
debugEnabled = logger.isDebugEnabled();
infoEnabled = logger.isInfoEnabled();
warnEnabled = logger.isWarnEnabled();
if (!warnEnabled) {
rootLevel = Level.ERROR;
} else if (!infoEnabled) {
rootLevel = Level.WARN;
} else if (!debugEnabled) {
rootLevel = Level.INFO;
} else if (!traceEnabled) {
rootLevel = Level.DEBUG;
} else {
rootLevel = Level.TRACE;
}
initialized = true;
}
public static void setRootLevel(Level level) {
rootLevel = level;
switch (level) {
case ERROR:
traceEnabled = false;
debugEnabled = false;
infoEnabled = false;
warnEnabled = false;
break;
case WARN:
traceEnabled = false;
debugEnabled = false;
infoEnabled = false;
warnEnabled = true;
break;
case INFO:
traceEnabled = false;
debugEnabled = false;
infoEnabled = true;
warnEnabled = true;
break;
case DEBUG:
traceEnabled = false;
debugEnabled = true;
infoEnabled = true;
warnEnabled = true;
break;
case TRACE:
traceEnabled = true;
debugEnabled = true;
infoEnabled = true;
warnEnabled = true;
break;
}
initialized = true;
}
public static Level getRootLevel() {
if (!initialized) initialize();
return rootLevel;
}
public static boolean isTraceEnabled() {
if (!initialized) initialize();
return traceEnabled;
}
public static boolean isDebugEnabled() {
if (!initialized) initialize();
return debugEnabled;
}
public static boolean isInfoEnabled() {
if (!initialized) initialize();
return infoEnabled;
}
public static boolean isWarnEnabled() {
if (!initialized) initialize();
return warnEnabled;
}
public static boolean isErrorEnabled() {
if (!initialized) initialize();
return true;
}
}