본문 바로가기
개발~/JAVA

Log4j 사용하기

by 보배곰 2019. 12. 19.

log4j.xml 사용하기

http://logging.apache.org/log4j/2.x/

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
       
       <!-- Appenders -->
       <appender name="console" class="org.apache.log4j.ConsoleAppender">
             <layout class="org.apache.log4j.PatternLayout">
                    <param name="ConversionPattern" value="%d %5p [%c::%M-%L]  %m%n" />
             </layout>
       </appender>
       
       <appender name="console-infolog"  class="org.apache.log4j.ConsoleAppender">
             <layout class="org.apache.log4j.PatternLayout">
                    <param name="ConversionPattern" value="%d %5p %m%n" />
             </layout>  
             <filter class="org.apache.log4j.varia.StringMatchFilter">
                    <param name="StringToMatch" value="_IGNORE_LOG_"/>
                    <param name="AcceptOnMatch" value="false"/>
             </filter>
       </appender>
    
        <!-- 날짜별 로그 파일 생성 -->
        <appender name="rollingFile"  class="org.apache.log4j.DailyRollingFileAppender">
               <param name="File" value="/app/tomcat/dailylogs/daily.log" />
               <param name="Append" value="true" />
               <!-- param name="MaxFileSize" value="100MB"/ -->
               <!-- param name="MaxBackupIndex" value="2"></param -->
               <param name="DatePattern" value="'.'yyyy-MM-dd" />
               <layout class="org.apache.log4j.PatternLayout">
                  <param name="ConversionPattern" value="%d %5p [%c::%M-%L] %m%n" />
               </layout>
        </appender>
       
       <!-- Application Loggers -->
       <logger name="com.tistory.treausurebear">
             <level value="debug" />
       </logger>
       <!-- Application Loggers End -->
       
       <!-- Query Loggers -->
       <logger name="jdbc.sqlonly" additivity="false">
             <level value="INFO"/>
             <appender-ref ref="console-infolog"/>
             <appender-ref ref="rollingFile" />
       </logger>
       <logger name="jdbc.resultsettable" additivity="false">
             <level value="INFO"/>
             <appender-ref ref="console"/>
             <appender-ref ref="rollingFile" />
       </logger>

       <!-- Root Logger -->
       <root>
             <priority value="off"/>
             <appender-ref ref="console" />
             <appender-ref ref="rollingFile" />
       </root>
</log4j:configuration>

 

ConversionPattern에 출력하는 로그형식을 지정해줄 수 있다. 취향에 따라 출력되는 형식은 다르다~

위에 형식대로 한다면 출력은 아래와 같이 된다. 

2020-01-07 01:10:05,195  INFO [com.tistory.treasurebear.KaKaoVisionUtil::ocr-101] Hello world~
2020-01-07 01:10:05,196  INFO [com.tistory.treasurebear.KaKaoVisionUtil::ocr-120] Hello world~


filter 사용해서, 원하는 것만 보여주기 

https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/varia/package-summary.html

 

org.apache.log4j.varia (Apache Log4j 1.2.17 API)

LevelRangeFilter This is a very simple filter based on level matching, which can be used to reject messages with priorities outside a certain range.

logging.apache.org

위에 필터는, StringToMatch에서 지정한 문자열(여기서는 _IGNORE_LOG_ )이 있으면 로그에 출력하지 않는다.(AcceptOnMatch=false) 


rollingFile은 날짜별로 로그를 생성한다. 파일 path, 기본 파일명은 File에 지정한다. 여기서는 /app/tomcat/dailylogs/daily.log 

날짜별로 로그를 생성할 때, 날짜마다 다른 이름의 로그를 쌓고 싶다면 DatePattern에서 지정해준다. 위에처럼 지정하면, 결과적으로 나오는 이름은 파일명은 다음과 같다.

/app/tomcat/dailylogs/daily.log.2020.01.01

 

 

 

 

 

'개발~ > JAVA' 카테고리의 다른 글

Kotlin 소개  (0) 2022.12.10
[Spring boot] page 1부터 시작하기  (0) 2020.04.30
JSON 빈 객체를 단말에 어떻게 내려줄까?(Android,iOS)  (0) 2019.04.25
주석이쁘게 달기  (0) 2017.06.16
[JAVA] java.util.Date  (0) 2017.03.17