Log4j2 hat Probleme beim Lesen des Datums im FilePattern meines RollingFile Appender. Wenn ich eine TimeBasedTriggeringPolicy hinzufüge und meine Config-Datei neu einrichte, erhalte ich folgende Fehlermeldung:Log4j2-RollingFile wird nicht geschrieben, wenn TimeBasedTriggeringPolicy aktiviert ist
"ERROR Es konnten keine Felder in die Builder-Klasse für die Plug-in-Klasse org.apache.logging.log4j.core.appender.RollingFileAppender, element injiziert werden RollingFile.java.lang.IllegalStateException: Muster enthält kein Datum "
Ich habe einen Unterbrechungspunkt in den log4j2-Code gesetzt und festgestellt, dass der Grund dafür ist, dass die Häufigkeitsvariable, die Teil des PatternProcessor-Objekts ist, null ist. Ich weiß nicht, warum das null ist oder wie man es auf etwas anderes als Null setzt.
Wenn ich die TimeBasedTriggeringPolicy auskommentieren, beginnt der Appender zu arbeiten und schreibt die Protokolle in meine Datei.
Hier sind die log4j Abhängigkeiten in meinem POM:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
Hier ist meine log4j2.xml Datei:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="30" status="DEBUG">
<Properties>
<Property name="baseDir">/logs/oracle/domains/cim</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%highlight{%d{DEFAULT} [%t] %-5p %c -%m%n}"/>
</Console>
<RollingFile name="RollingFile" fileName="${baseDir}/cim.log"
filePattern="${baseDir}/cim-%d{yyyy-MM-dd}.log" append="true">
<PatternLayout pattern="%d{DEFAULT} %-5p %c - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
<DefaultRolloverStrategy max="31"/>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="com.cim" level="debug" additivity="true">
<Appender-Ref ref="RollingFile"/>
</Logger>
<Root level="debug" additivity="false">
<Appender-Ref ref="Console"/>
</Root>
</Loggers>
</Configuration>
Hier ist der erste Stack-Trace nach der Fehlermeldung oben:
at org.apache.logging.log4j.core.appender.rolling.PatternProcessor.getNextTime(PatternProcessor.java:119)
at org.apache.logging.log4j.core.appender.rolling.TimeBasedTriggeringPolicy.initialize(TimeBasedTriggeringPolicy.java:59)
at org.apache.logging.log4j.core.appender.rolling.CompositeTriggeringPolicy.initialize(CompositeTriggeringPolicy.java:52)
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.setTriggeringPolicy(RollingFileManager.java:216)
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.updateData(RollingFileManager.java:439)
at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:119)
at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114)
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:128)
at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:135)
at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:58)
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:942)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:882)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:874)
at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:498)
at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:227)
at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:239)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:530)
at org.apache.logging.log4j.core.LoggerContext.onChange(LoggerContext.java:653)
at org.apache.logging.log4j.core.config.ConfiguratonFileWatcher$ReconfigurationRunnable.run(ConfiguratonFileWatcher.java:65)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Danke für die Hilfe. Ich hatte ursprünglich% i in der log4j2.xml und es funktionierte immer noch nicht. Ich habe mich gerade so oft neu konfiguriert, um das Problem zu beheben, das ich vergessen habe, als ich es gepostet habe. Ich weiß immer noch nicht, was das Problem war, aber ich verlor irgendwann die Internetverbindung zu meiner Datenbank und musste neu booten, und natürlich fing alles richtig an, lol. Danke noch einmal. – iBeatzPrograms