ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • log4j.xml 설정 정리 (log4j.xml 세팅대로 level 이 안먹는다고?)
    ♣ Tech & Biz Salon/Tech 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>



Designed by Tistory.