복붙노트

[SPRING] 타사 프레임 워크에서 log4j 메시지 필터링

SPRING

타사 프레임 워크에서 log4j 메시지 필터링

외부 타사 프레임 워크에서 로그 메시지를 필터링하려면 어떻게합니까? 나는 Hibernate와 Spring 프레임 워크를 사용하고 있으며, log4j 로그 만 나타나도록 로그를 숨기고 싶습니다.

해결법

  1. ==============================

    1.내 log4j.properties 파일에서 루트 로거 로깅 수준을 ERROR로 설정했습니다. 그런 다음 구체적으로 기록하고자하는 패키지의 경우, 응용 프로그램 코드와 같이 로깅 수준을 INFO 또는 DEBUG로 설정합니다.

    내 log4j.properties 파일에서 루트 로거 로깅 수준을 ERROR로 설정했습니다. 그런 다음 구체적으로 기록하고자하는 패키지의 경우, 응용 프로그램 코드와 같이 로깅 수준을 INFO 또는 DEBUG로 설정합니다.

    log4j.rootLogger=ERROR, stdout
    log4j.logger.com.initech.tps=DEBUG
    log4j.logger.org.hibernate.SQL=INFO
    

    루트 로깅을 낮게 설정 한 동료가보고 싶지 않은 모든 것을 나열하는 것을 보았습니다. 나는 내가 기록하고 싶지 않은 모든 것보다 내가 기록하고 싶은 것을 나열하고 싶습니다.

    BTW는 제 3 자 구성 요소에 대해 완전히 로그 오프하는 것을 나에게 나쁜 생각으로 보입니다. 예를 들어, Spring은 상대적으로 시끄럽다. 그리고 내가 정말로 알 필요가없는 것들에 대해 WARN을 사용한다. 그러나 뭔가를 위해 ERROR 엔트리를 기록한다면 나는 그것을보고 싶다.

  2. ==============================

    2.log4j.properties / log4j.xml 파일에서 로거 레벨을 변경하면됩니다.

    log4j.properties / log4j.xml 파일에서 로거 레벨을 변경하면됩니다.

    패키지에서 로그를 필터링하지만 나중에 사용할 수 있도록 로거 구성을 유지하려면 로거의 를 설정해야합니다. 또한 오류가 발생하거나 치명적인 문제가 발생하는 경우에만 기록하도록 최고 수준으로 설정할 수 있습니다.

    hibernate 및 springframework 패키지에서 로깅을 끄려면 log4j.xml에 다음 항목을 추가해야합니다.

    <logger name="org.springframework">
        <level value="off"/>
    </logger>
    <logger name="org.hibernate">
        <level value="off"/>
    </logger>
    
  3. ==============================

    3.log4j.properties에서는 로거 단위로 개별 레벨을 정의 할 수 있습니다.

    log4j.properties에서는 로거 단위로 개별 레벨을 정의 할 수 있습니다.

    log4j.logger.<name>=FATAL
    

    log4j.xml에서 구문은 다음과 같습니다.

    <logger name="<name>">
      <level value="fatal"/> 
    </logger>
    

    은 종종 정규화 된 클래스 이름입니다. 치명적 오류 대신 WARN 또는 ERROR를 사용하고자 할 수 있습니다.

  4. ==============================

    4.log4j.properties에 패키지를 추가하지 마십시오. 예를 들어, 당신은 속성 파일에 Spring을 가지고 있어야합니다. 아래에 몇 가지 항목이 있으면 그것을 꺼내십시오 (org.springframework로 시작하는 모든 항목). 최대 절전 모드에서도 동일한 작업을 수행해야합니다.

    log4j.properties에 패키지를 추가하지 마십시오. 예를 들어, 당신은 속성 파일에 Spring을 가지고 있어야합니다. 아래에 몇 가지 항목이 있으면 그것을 꺼내십시오 (org.springframework로 시작하는 모든 항목). 최대 절전 모드에서도 동일한 작업을 수행해야합니다.

    #Logs the SQL from Spring
    log4j.logger.org.springframework.jdbc.core.JdbcTemplate=ERROR
    #Logs the SQL parameters from Spring
    log4j.logger.org.springframework.jdbc.core.StatementCreatorUtils=ERROR
    

    또한 언급 한 바와 같이 다음을 설정해야합니다. 나는 이것을 언급하는 것을 잊었다.

    log4j.rootLogger=FATAL  
    or   
    log4j.rootLogger=ERROR  
    
  5. from https://stackoverflow.com/questions/3569395/filtering-out-log4j-messages-from-third-party-frameworks by cc-by-sa and MIT license