log4j2의 RollingFile appender에 대해 문의 드립니다
- 작성자 :
- 박*식
- 작성일 :
- 2016-01-21 10:48:12
- 조회수 :
- 2,218
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
Apache 웹서버와 Tomcat을 3개의 클러스터링 환경으로 구성하여
로드밸런싱으로 서비스를 제공하는 시스템입니다.
log4j2의 RollingFile appender를 사용하여 각각의 톰캣 클러스터에서 발생한 로그를
하나의 로그 파일로 기록하고 있는데,
<RollingFile /> 선언 태그에 append="false" 옵션을 추가하면
시스템을 재시작할때 시스템을 내리기 전까지 기록된 로그가 유실되고(rolling 파일로 남지 않음)
append="true" 옵션을 추가하거나 입력하지 않고 default 상태로 두면
시스템을 내리기 전까지 기록된 로그가 rolling 파일로 남지만
원본 로그파일의 크기가 SizeBasedTriggeringPolicy 제한을 무시하고 갈수록 커집니다.
시스템을 내리기 전까지 기록된 로그가 유실되지 않으면서
일정 크기 이상이 되면 rolling파일로 남기게 할 수는 없을까요?
아래는 log4j2.xml 설정 파일입니다.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="%d %5p [%c] %m%n" />
</Console>
<RollingFile name="test" fileName="./logs/test.log" filePattern="./logs/test-%i.log">
<PatternLayout>
<Pattern>%5p [%t] [%d] (%M, %F:%L) - %m%n</Pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy />
<SizeBasedTriggeringPolicy size="100 KB" />
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
</Appenders>
<Loggers>
<logger name="com.temp.test" level="DEBUG" additivity="false">
<appender-ref ref="test" /> </logger>
<logger name="org.springframework" level="ERROR" additivity="false">
<appender-ref ref="console" /> </logger>
<logger name="javax.transaction" level="ERROR" additivity="false">
<appender-ref ref="console" /> </logger>
<logger name="com.ibatis" level="ERROR" additivity="false">
<appender-ref ref="console" /> </logger>
<logger name="java.sql." level="ERROR" additivity="false">
<appender-ref ref="console" /> </logger>
<logger name="org.apache" level="ERROR" additivity="false">
<appender-ref ref="console" /> </logger>
<Root level="ERROR">
<AppenderRef ref="console" /> </Root>
</Loggers>
</Configuration>
로드밸런싱으로 서비스를 제공하는 시스템입니다.
log4j2의 RollingFile appender를 사용하여 각각의 톰캣 클러스터에서 발생한 로그를
하나의 로그 파일로 기록하고 있는데,
<RollingFile /> 선언 태그에 append="false" 옵션을 추가하면
시스템을 재시작할때 시스템을 내리기 전까지 기록된 로그가 유실되고(rolling 파일로 남지 않음)
append="true" 옵션을 추가하거나 입력하지 않고 default 상태로 두면
시스템을 내리기 전까지 기록된 로그가 rolling 파일로 남지만
원본 로그파일의 크기가 SizeBasedTriggeringPolicy 제한을 무시하고 갈수록 커집니다.
시스템을 내리기 전까지 기록된 로그가 유실되지 않으면서
일정 크기 이상이 되면 rolling파일로 남기게 할 수는 없을까요?
아래는 log4j2.xml 설정 파일입니다.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="%d %5p [%c] %m%n" />
</Console>
<RollingFile name="test" fileName="./logs/test.log" filePattern="./logs/test-%i.log">
<PatternLayout>
<Pattern>%5p [%t] [%d] (%M, %F:%L) - %m%n</Pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy />
<SizeBasedTriggeringPolicy size="100 KB" />
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
</Appenders>
<Loggers>
<logger name="com.temp.test" level="DEBUG" additivity="false">
<appender-ref ref="test" /> </logger>
<logger name="org.springframework" level="ERROR" additivity="false">
<appender-ref ref="console" /> </logger>
<logger name="javax.transaction" level="ERROR" additivity="false">
<appender-ref ref="console" /> </logger>
<logger name="com.ibatis" level="ERROR" additivity="false">
<appender-ref ref="console" /> </logger>
<logger name="java.sql." level="ERROR" additivity="false">
<appender-ref ref="console" /> </logger>
<logger name="org.apache" level="ERROR" additivity="false">
<appender-ref ref="console" /> </logger>
<Root level="ERROR">
<AppenderRef ref="console" /> </Root>
</Loggers>
</Configuration>
A
안녕하세요. 표준프레임워크센터입니다.
올려주신 log4j2 설정파일을 확인해보니 RollingFile Appender 설정 중 Policies 부분의 OnStartupTriggeringPolicy 속성의 문제로
사료 됩니다.
정책 중 OnStartupTriggeringPolicy 속성의 경우 JVM 시작 시 로그파일을 롤오버 하는 속성으로 재시작시 로그가 사라지는 원인이 해당 설정으로 인해 발행하는 것으로 사료됩니다.
따라서 해당 속성을 주석처리 해보시고 진행해보시기 바랍니다.
감사합니다.
올려주신 log4j2 설정파일을 확인해보니 RollingFile Appender 설정 중 Policies 부분의 OnStartupTriggeringPolicy 속성의 문제로
사료 됩니다.
정책 중 OnStartupTriggeringPolicy 속성의 경우 JVM 시작 시 로그파일을 롤오버 하는 속성으로 재시작시 로그가 사라지는 원인이 해당 설정으로 인해 발행하는 것으로 사료됩니다.
따라서 해당 속성을 주석처리 해보시고 진행해보시기 바랍니다.
감사합니다.