성장과정(dev)/Spring + Java + JPA
log4j 설정
lowellSunny
2020. 9. 17. 16:54
log4j.xml 을 이루는 태그
<Appender> - 로그의 출력 위치를 결정 ( 파일, 콘솔, DB 등 )
<Layout> - 출력 형식 결정
<Logger> - 로깅 메시지를 Appender에 전달. 개발자가 로그레벨을 이용해 로그 출력 여부 조정 가능
* Appender class 종류
* PatternLayout 클래스에서 사용되는 출력 속성
<!-- Root Logger -->
<root>
<priority value="warn" /><!-- 전체 어플리케이션의 레벨을 지정할 때 사용( default, logger로 따로 레벨을 지정해주면 해당 패키지는 지정레벨로 -->
<appender-ref ref="console" />
<appender-ref ref="ERROR" />
<appender-ref ref="LOGFILE-DAILY" />
</root>
위 코드에서 priority로 정의 된 것은 어플리케이션의 기본 로그레벨을 결정한다.
그리고 다음과 같이 <logger> 태그에서 정의 된 내용들에게 로그레벨에 대한 우선순위가 있다.
(로그레벨 부분설정)
<!-- mybatis loggers start -->
<!-- 에러일 경우 sql 쿼리문까지 출력 -->
<logger name="java.sql.Connection">
<level value="error" />
</logger>
<logger name="java.sql.Statement">
<level value="error" />
</logger>
<logger name="java.sql.PreparedStatement">
<level value="error" />
</logger>
<logger name="java.sql.ResultSet">
<level value="error" />
</logger>
<!-- mybatis loggers end -->
<!-- 3rdparty Loggers -->
<!-- 패키지별로 다른 로그레벨 적용 -->
<logger name="org.springframework.core">
<level value="info" />
</logger>
<logger name="org.springframework.beans">
<level value="info" />
</logger>
<logger name="org.springframework.context">
<level value="info" />
</logger>
<logger name="org.springframework.web">
<level value="info" />
</logger>
* log4j 성격별 로그파일 error레벨 지정하기
- ex) ERROR.log 파일에는 ERROR 레벨만 출력하고싶다면?
<appender name="ERROR" class="org.apache.log4j.rolling.RollingFileAppender">
<param name="Threshold" value="ERROR" />
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern" value="D:/WWW/Web/NewIntranet/Log/Online/error.%d{yyyy-MM-dd}.log"/>
<param name="maxHistory" value="2"/>
</rollingPolicy>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}][(%F:%L)] %r %5p - %m%n [message:::::] %m" />
</layout>
</appender>
<param name="Threshold" value="ERROR" />
해당 라인을 추가하면 된다. log4j.appender.console.Threshold를 이용하여 해당파일이 출력하는 로그의 레벨을 설정할 수 있다.