Skip to content

Instantly share code, notes, and snippets.

@jforge
Created October 2, 2015 12:45
Show Gist options
  • Save jforge/9825978ca70ee98e93af to your computer and use it in GitHub Desktop.
Save jforge/9825978ca70ee98e93af to your computer and use it in GitHub Desktop.
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.appender.ConsoleAppender;
import org.apache.logging.log4j.core.config.AppenderRef;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.LoggerConfig;
import org.apache.logging.log4j.core.layout.PatternLayout;
public class LogUtil {
/**
* Configures rootLogger + dedicated Logger by name for Unit Test classSetup
*/
public static void configureTestLoggers(String unitLoggerName, Level unitLoggerLevel) {
if (unitLoggerName != null) {
if (unitLoggerLevel == null) {
unitLoggerLevel = Level.INFO;
}
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final Configuration config = ctx.getConfiguration();
Appender appender = ConsoleAppender.createDefaultAppenderForLayout(PatternLayout.newBuilder()
.withPattern(PatternLayout.TTCC_CONVERSION_PATTERN)
.build());
appender.start();
config.addAppender(appender);
LoggerConfig loggerConfig = config.getLoggerConfig(unitLoggerName);
if (!loggerConfig.getName().equals(unitLoggerName)) {
AppenderRef ref = AppenderRef.createAppenderRef(appender.getName(), null, null);
AppenderRef[] refs = new AppenderRef[] { ref };
loggerConfig = LoggerConfig.createLogger("false", unitLoggerLevel, unitLoggerName, "true", refs, null, config,
null);
config.addLogger(unitLoggerName, loggerConfig);
}
loggerConfig.addAppender(appender, null, null);
loggerConfig.setLevel(unitLoggerLevel);
ctx.updateLoggers();
}
}
/**
* Configures rootLogger + dedicated Logger by name for Unit Test classSetup
*/
public static void configureRootLogger(Level rootLoggerLevel) {
org.apache.logging.log4j.core.Logger rootLogger = (org.apache.logging.log4j.core.Logger) LogManager.getRootLogger();
Level level = Level.INFO; // default
if (rootLoggerLevel != null) {
level = rootLoggerLevel;
}
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final Configuration config = ctx.getConfiguration();
LoggerConfig loggerConfig = config.getLoggerConfig(rootLogger.getName());
loggerConfig.setLevel(level);
if (rootLogger.getAppenders().isEmpty()) {
Appender appender = ConsoleAppender.createDefaultAppenderForLayout(PatternLayout.newBuilder()
.withPattern("%d [%-5p] %-45.45c - %m%n")
.build());
appender.start();
config.addAppender(appender);
loggerConfig.addAppender(appender, null, null);
}
ctx.updateLoggers();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment