I am trying to configure and configure Log4j2 only with ConfigurationFactory and this . The code I use is as follows:
public class LoggingConfiguration { public static final String PATTERN_LAYOUT = "[%d] [%t] [%-5level] - %msg (%logger{1}:%L) %n%throwable"; public static final String LOG_FILE_NAME = "app.log"; public static final String LOG_FILE_NAME_PATTERN = LOG_FILE_NAME + "-yyyy.MM.dd"; static { ConfigurationFactory.setConfigurationFactory(new Log4j2ConfigurationFactory()); } public static void configure() { } @Plugin(category = "ConfigurationFactory", name = "Log4j2ConfigurationFactory") @Order(0) public static class Log4j2ConfigurationFactory extends ConfigurationFactory { @Override protected String[] getSupportedTypes() { return null; } @Override public Configuration getConfiguration(ConfigurationSource source) { return new Log4j2Configuration(); } @Override public Configuration getConfiguration(String name, URI configLocation) { return new Log4j2Configuration(); } } private static class Log4j2Configuration extends DefaultConfiguration { public Log4j2Configuration() { setName("app-log4j2"); String root = System.getProperty("APP_ROOT", "/tmp"); if (!root.endsWith("/")) { root += "/"; }
note that
- it extends
BaseConfiguration , which already configures the default console - he is trying to add the download file to the root log
I get the following exception:
Exception in thread "main" java.lang.IllegalStateException: Pattern does not contain a date at org.apache.logging.log4j.core.appender.rolling.PatternProcessor.getNextTime(PatternProcessor.java:91) at org.apache.logging.log4j.core.appender.rolling.TimeBasedTriggeringPolicy.initialize(TimeBasedTriggeringPolicy.java:49) at org.apache.logging.log4j.core.appender.rolling.CompositeTriggeringPolicy.initialize(CompositeTriggeringPolicy.java:43) at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.<init>(RollingFileManager.java:58) at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:297) at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:267) at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:71) at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:65) at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:78) at org.apache.logging.log4j.core.appender.RollingFileAppender.createAppender(RollingFileAppender.java:175) at com.narmnevis.papyrus.LoggingConfiguration$Log4j2Configuration.<init>(LoggingConfiguration.java:79) at com.narmnevis.papyrus.LoggingConfiguration$Log4j2ConfigurationFactory.getConfiguration(LoggingConfiguration.java:55) at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:377) at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:149) at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:85) at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:34) at org.apache.logging.log4j.LogManager.getContext(LogManager.java:200) at org.slf4j.helpers.Log4jLoggerFactory$PrivateManager.getContext(Log4jLoggerFactory.java:104) at org.slf4j.helpers.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:90) at org.slf4j.helpers.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:46) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:270) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281) at com.narmnevis.papyrus.Main.<init>(Main.java:12) at com.narmnevis.papyrus.Main.main(Main.java:21)
If I comment on the code after MARKER in the above code, it works, but it seems that I am missing something to set up a sliding file-application. What should I do to fix this?
java logging log4j2
nobeh
source share