Created
December 11, 2016 14:04
-
-
Save nkcoder/cd74919fd80594c56e09b448a2d1ba31 to your computer and use it in GitHub Desktop.
change log level at runtime (logback and slf4j)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import ch.qos.logback.classic.Level; | |
import ch.qos.logback.classic.LoggerContext; | |
import org.slf4j.Logger; | |
import org.slf4j.LoggerFactory; | |
import java.util.List; | |
/** | |
* change log level at runtime | |
* Created by nkcoder on 10/8/16. | |
*/ | |
public class ChangeLogLevel { | |
private static Logger logger = LoggerFactory.getLogger(ChangeLogLevel.class); | |
private static String cachedLevel = ""; | |
public static void main(String[] args) { | |
if (args == null || args.length != 1) { | |
logger.error("params error."); | |
return; | |
} | |
String logLevel = args[0]; | |
Level level = Level.toLevel(logLevel.toUpperCase()); // default to Level.DEBUG | |
if (cachedLevel.equalsIgnoreCase(level.levelStr)) { | |
logger.debug("level: {} not changed", cachedLevel); | |
return; | |
} | |
logger.info("level will change from: {} to: {}", cachedLevel, level.levelStr); | |
cachedLevel = level.levelStr; | |
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory(); | |
List<ch.qos.logback.classic.Logger> loggerList = loggerContext.getLoggerList(); | |
loggerList.stream().forEach(tmpLogger -> tmpLogger.setLevel(level)); | |
logger.debug("debug message"); | |
logger.info("info message"); | |
logger.error("error message"); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment