Log4J 2.0을 사용하여 현재 수행중인 프로젝트의 로그를 만듭니다. 로그는 작으며 3 개월 동안 유지해야한다는 요구 사항이 있습니다. 나는 현재 달의 로그를 3 개의 아카이브 (각 달의 로그를 담고 있음)로 만들고 싶습니다.log4j2 월간 로그 롤오버
내가 도움이 필요한 문제는 log4j가 월 (또는 월말) 초에 로그를 순환하도록 구성하는 것입니다.
이 문제를 조사한 결과 거의 모든 것이 log4j 1.x에서 2.0으로 존재하지 않는 datePattern 매개 변수에 관한 것입니다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="warn" name="NKMS" packages="">
<appenders>
<FastRollingFile name="LogFile" fileName="logs/Tier2HttpServer.log" filePattern="logs/app-%d{yyyy-MM-dd}.log.gz">
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
<DefaultRolloverStrategy max="4"/>
</FastRollingFile>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</Console>
</appenders>
<loggers>
<logger name="mil.navy.nrl.itd.xml_filter" level="trace"/>
<root level="trace">
<appender-ref ref="STDOUT"/>
<appender-ref ref="LogFile"/>
</root>
</loggers>
</configuration>
나는 (지금은) 콘솔에 로그 파일 및 디버그 정보와 이상을 쓰고 있어요 :
여기 내 log4j2.xml 파일입니다. 파일은 잘 작성되었지만 매일 롤오버하는 것처럼 보입니다 (기본값 인 것 같습니다).
FastRollingFile : filePattern을 " '.'yyyy-MM"으로 변경하려고 시도했지만 이상한 일이 발생합니다 (단 하나의 항목 만 파일에 기록되고 즉시 아카이브가 작성됩니다).
log4j-2.0-beta8에 대한 소스를 다운로드했으며 PatternProcessor가 RolloverFrequency.MONTHLY 열거 형을 포함하는 RolloverFrequency를 구문 분석하지만 다시 구현/사용 방법을 알 수 없습니다.
언제나 제공 할 수있는 지원이나 조언은 대단히 좋습니다.
- 에이스
맞습니다. 아카이브가 즉시 생성됩니다. 또한 새로 작성된 로그에 단일 항목 만 작성되고 로그 수집이 중지됩니다. 응용 프로그램을 다시 시작하면 동일한 프로세스가 반복됩니다. – AceFunk
JIRA 티켓이 생성되었습니다. 내 첫 번째, 그래서 나는 그것을 올바르게 했길 바래. :) https://issues.apache.org/jira/browse/LOG4J2-385 – AceFunk
이것은 Log4J 2.0 beta8 버그입니다. 위의 filePattern은 로그를 월간 롤오버해야합니다. – AceFunk