Log4j2가 내 RollingFile Appender의 filePattern에서 날짜를 읽는 데 문제가 있습니다. TimeBasedTriggeringPolicy를 추가하고 구성 파일을 다시 구성하면이 오류가 발생합니다.Log4j2-TimeBasedTriggeringPolicy가 활성화 된 경우 롤링 파일 작성 안 함
"ERROR 플러그인 유형 클래스 org.apache.logging.log4j.core.appender.RollingFileAppender 요소의 빌더 클래스에 필드를 삽입 할 수 없습니다. 롤링 파일 java.lang.IllegalStateException : 패턴에 날짜가 없습니다. "
log4j2 코드에 중단 점을 넣었습니다. 그 이유는 PatternProcessor 개체의 일부인 빈도 변수가 null이라는 것을 알았습니다. 왜 이것이 null인지 또는 null 이외의 값으로 설정하는 방법을 모르겠습니다.
TimeBasedTriggeringPolicy를 주석 처리하면 appender가 작업을 시작하고 로그를 내 파일에 씁니다.
: 여기<?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>
위의 오류 메시지 후 초기 스택 추적입니다 : 여기
<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>
내 log4j2.xml 파일입니다 : 여기
내 POM에서 log4j에 의존하다
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)
도움 주셔서 감사합니다. 원래 log4j2.xml에서 % i을 (를) 갖고 있었지만 여전히 작동하지 않았습니다. 나는 내가 게시했을 때 그것을 놓기를 잊어 버린 문제를 해결하기 위해 여러 번 재구성했다. 나는 여전히 문제가 무엇인지 모르지만, 언젠가는 DB에 인터넷 연결을 끊어서 재부팅해야만했다. 물론 모든 것이 제대로 작동하기 시작했다. 다시 한번 감사드립니다. – iBeatzPrograms