package cc.blynk.utils; import cc.blynk.utils.properties.BaseProperties; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.core.config.Configurator; /** * The Blynk Project. * Created by Dmitriy Dumanskiy. * Created on 28.09.15. */ public final class LoggerUtil { private LoggerUtil() { } /** * - Sets async logger for all logs * - Defines logging folder * - Sets logging level based on properties */ public static void configureLogging(BaseProperties serverProperties) { //required to make all loggers async with LMAX disruptor System.setProperty("log4j2.contextSelector", "org.apache.logging.log4j.core.async.AsyncLoggerContextSelector"); System.setProperty("AsyncLogger.RingBufferSize", serverProperties.getProperty("async.logger.ring.buffer.size", "2048")); //configurable folder for logs via property. if (serverProperties.getProperty("logs.folder") == null) { System.out.println("logs.folder property is empty."); System.exit(1); } System.setProperty("logs.folder", serverProperties.getProperty("logs.folder")); //changing log level based on properties file changeLogLevel(serverProperties.getProperty("log.level")); } /** * Sets desired log level from properties. * * @param level - desired log level. error|info|debug|trace, etc. */ private static void changeLogLevel(String level) { Level newLevel = Level.valueOf(level); Configurator.setAllLevels(LogManager.getRootLogger().getName(), newLevel); } }