Java 로그 프레임워크 - Logback 사용 참고 사항

2897 단어
한 항목에서 로그 기록 작업을 사용하는 곳이 많기 때문에 로그 기록 작업과 관련된 성능 문제에 주목해야 한다.
이러한 응용 장면이 있다. 기록하고자 하는 내용은 순수한 문자열이 아니라 다른 유형의 내용을 포함한다. 예를 들어'My Age Is'+age'. 그 중에서age는 Integer 유형의 대상이다.
구체적인 코드는 다음과 같습니다.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class Main {


    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(Main.class);
        Integer age = 24;
        //    debug    ,      trace,info,warn,error  
        logger.debug("My Age Is" + age);
    }
}

비고: 상기 코드 세션의 logger 대상은ch.qos를 가리킨다.logback.classic.Logger 유형 객체, logger를 실행합니다.debug("My Age Is"+ age) 문은 ch.qos를 실제로 실행합니다.logback.classic.Logger의 debug 방법
상기 코드 세션에서logger.debug("My Age Is"+ age) 문이 실행되는 동안 최대 3개의 성능 소모점, 최소 2개의 성능 소모점이 있습니다.구체적인 사항:
1)age를 호출합니다."public void debug (String msg) {}"과 일치하는 순수한 문자열을 가져오는 방법 설명
2) 로깅 요청의 Level 값(여기는 debug)과 Logger 인스턴스의 Level 값을 비교하여 로깅 요청이 유효한지 판단
3) 2단계에서 결과가 유효하다고 판단되는 경우 구체적인 로그 기록 조작;2단계에서 결과를 무효로 판단한 경우 조작 없음
다음과 같은 두 가지 최적화 시나리오가 있습니다.
1. isDebugEnabled() 방법을 사용한다.
구체적인 코드는 다음과 같습니다.
4
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class Main {


    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(Main.class);
        Integer age = 24;
        //    debug    ,      trace,info,warn,error  
        if (logger.isDebugEnabled())
            logger.debug("My Age Is" + age);
    }
}
상기 코드 세션에서if(logger.isDebugEnabled())logger.debug("My Age Is"+ age) 문이 실행되는 동안 최대 4개의 성능 소모점, 최소 1개의 성능 소모점이 있습니다.구체적인 사항:
1) Logger 인스턴스의 Level 값을 보고 debug Level의 로깅 요청이 유효한지 판단
2) 1단계 판단 결과가 무효인 경우 즉시 퇴장하고 아무런 조작도 하지 않는다.그렇지 않으면 age를 호출합니다."public void debug (String msg) {}"과 일치하는 순수한 문자열을 가져오는 방법 설명
3) 로깅 요청의 Level 값(여기는 debug)과 Logger 인스턴스의 Level 값을 비교하여 로깅 요청이 유효한지 판단
4) 3단계 판단 결과가 유효한 경우 구체적인 로그 기록 조작;3단계 잘못된 결과 판단 시 작업 없음
둘째, debug(String var1, Object var2) 방법을 사용하는 구체적인 코드는 다음과 같습니다.
4
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class Main {


    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(Main.class);
        Integer age = 24;
        //    debug    ,      trace,info,warn,error  
        logger.debug("My Age Is {}", age);
    }
}
상기 코드 세션에서logger.debug("My Age Is {}", age) 문이 실행되는 동안 성능 소모점은 3개 이상이고 최소한 1개의 성능 소모점은 있다.각각:
1) 로깅 요청의 Level 값(debug)과 Logger 인스턴스의 Level 값을 비교하여 로깅 요청이 유효한지 판단
2) 1단계의 판단 결과가 무효인 경우 즉시 퇴장하고 아무런 조작도 하지 않는다.그렇지 않으면 age를 호출합니다.toString () 방법으로 순수한 문자열을 얻습니다.
3) 구체적인 로깅 작업
참조 자료:
[1]http://logback.qos.ch/manual/architecture.html
[2]http://blog.csdn.net/dslztx/article/details/47450741

좋은 웹페이지 즐겨찾기