♣ Tech & Biz Salon/Tech

log4j.xml 설정 정리 (log4j.xml 세팅대로 level 이 안먹는다고?)

TasteGod 2012. 7. 19. 12:29

- 환경 STS (spring3.1, log4j 1.2.15 )


* web.xml 에 log4j config file 경로를 지정하여 

   해당 config파일내에 logger 를 추가하고, 별도 파일 출력한다던가 하면

   돌아가긴 하는데, 뜻대로 되지는 않았다.  log level 지정이 원하는대로 안되는 상황이 발생함.

    

    이때 tomcat 기동시 log에는 log4j config load 를 /WEB-INF/spring/log4j/log4j.xml

    파일을 잘 보고 있다고 나와서 별 의심없이  해당 파일만 죽어라 이래저래 고쳤었다.

    

    근데 오늘 이클립스 좌측 뷰를 보니 헐... log4j.xml 이 다른데도 있는 것이었다.

   

   ▶ 좌충우돌 상황

        Maven  사용시 src/main/resource 밑에 log4j.xml 가 있음 ( Spring Mvc Template 이용시 자동생성되어 있음 )

        web.xml 에 별 기술하지 않아도 log4j 정상동작함

        기억을 살려보니 Template 세팅후 log4j 로그가 나왔었다.

   

   ▶ 처리

        두개의 log4j.xml 을 동일하게 맞춰주면 잘됨.

       또는 src/main/resource 를 삭제하여도 동작함.




web.xml 일부

<context-param>

<param-name>log4jConfigLocation</param-name>

<param-value>/WEB-INF/spring/log4j/log4j.xml</param-value>

</context-param>

    <context-param>

        <description>Interval between config file refresh checks, in milliseconds. If not specified,

            no refresh checks will happen, which avoids starting Log4J's watchdog thread.

            1000 * 60 = 1Minutes

            I have ever tested. This Works Well.

        </description>

        <param-name>log4jRefreshInterval</param-name>

        <param-value>6000</param-value>

    </context-param>

<listener>

<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>

</listener>


* log4jRefreshInterval 을 세팅하면
   log4j.xml 에서 level 이나 로그출력 패턴 변경을 하면 자동 리프레쉬 된다.


log4j.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE log4j:configuration PUBLIC "-//LOGGER" "log4j.dtd">

 

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

 

    <!-- Appenders -->

<appender name="stdout" class="org.apache.log4j.ConsoleAppender"> 

 <param name="Target" value="System.out"/> 

 <layout class="org.apache.log4j.PatternLayout"> 

   <!--  <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/> -->

   <param name="ConversionPattern" value="%d{yy-MM-dd HH:mm:ss.SSS} %5p %C [%M :%L] %m%n" />

 </layout> 

</appender> 

 

    <appender name="dailyRollingFile" class="org.apache.log4j.DailyRollingFileAppender">

<param name="File" value="D:/JE/applogs/pss.log" />

<param name="Append" value="true" />

<param name="DatePattern" value="'-'yyyyMMdd'.log'" />

<layout class="org.apache.log4j.PatternLayout">

<!-- <param name="ConversionPattern" value="%d %5p [%c:%L] %m%n" /> -->

<param name="ConversionPattern" value="%d{yy-MM-dd HH:mm:ss.SSS} %5p %C [%M :%L] %m%n" />

</layout>

</appender>

    <!-- 3rdparty Loggers -->

<logger name="com.orgos" additivity="true">

        <level value="DEBUG" />

        <appender-ref ref="dailyRollingFile" />

    </logger>

        

    <logger name="org.springframework.core">

        <level value="WARN" />

    </logger>

 

    <logger name="org.springframework.beans">

        <level value="WARN" />

    </logger>

     

    <logger name="org.springframework.context">

        <level value="WARN" />

    </logger>

 

    <logger name="org.springframework.web">

        <level value="WARN" />

    </logger>

         

    <!-- Root Logger -->

    <root>

        <priority value="debug" />

        <appender-ref ref="stdout" />

    </root>

    

</log4j:configuration>