Apache Log4j 2 상세 설명

17539 단어 로그
성능 테스트 를 통 해 얻 은 결론 은 Log4j 2 로그 프레임 워 크 의 성능 이 이렇게 강하 다 는 것 이다.그러면 탁월 함 을 추구 하 는 프로그램 원숭이 로 서 Log4j 2 를 잘 배 워 서 프로젝트 개발 에 활용 해 야 한다.
Apache Log4j 2 상세 설명
글 목록
  • Apache Log4j 2 상세 설명
  • 안내
  • 특징
  • API 분리
  • 성능 향상
  • 자동 으로 다시 불 러 오기 설정
  • 고급 필터
  • 플러그 인 구조
  • 쓰레기 없 는 메커니즘
  • Log4j 2 사용
  • 인용 의존
  • 프로필 추가
  • 동기 로그,혼합 로그 와 비동기 로그 설정 상세 설명
  • 프로필 상세 설명
  • 로그 중복 인쇄 문제
  • Lombok 도 구 를 사용 하여 Logger 류 를 간소화 합 니 다
  • 간단 한 소개
    Apache Log4j 2 는 Log4j 의 업그레이드 로 전신 Log4j 1.x 보다 중대 한 개선 을 제공 하고 Logback 에서 사용 할 수 있 는 많은 개선 을 제공 하 며 Logback 구조 중의 일부 문 제 를 복원 했다.현재 가장 우수한 자바 로그 프레임 워 크 입 니 다.하나 도 없습니다.
    특징.
    API 분리
    Log4j 의 API 는 실현 과 분리 되 어 응용 프로그램 개발 자 들 이 어떤 종류 와 방법 을 사용 할 수 있 는 지 알 수 있 고 앞으로 의 호환성 을 확보 할 수 있 습 니 다.이로써 Log4j 팀 은 안전 하고 호 환 되 는 방식 으로 개선 할 수 있다.
    성능 향상
    Log4j 2 는 LMAX Disruptor 라 이브 러 리 를 기반 으로 한 차세 대 비동기 기록 기 를 포함한다.다 중 스 레 드 장면 에서 비동기 기록 기의 스루풋 은 Log4j 1.x 와 Logback 보다 18 배 높 고 지연 이 낮다.
    자동 으로 다시 불 러 오기 설정
    Logback 과 마찬가지 로 Log4j 2 는 수정 할 때 자동 으로 설정 을 다시 불 러 올 수 있 습 니 다.Logback 과 달리 로그 이 벤트 를 다시 설정 할 때 잃 어 버 리 지 않 습 니 다.
    고급 필터
    Logback 과 마찬가지 로 Log4j 2 는 Log 이벤트 의 컨 텍스트 데이터,태그,정규 표현 식 과 다른 구성 요 소 를 기반 으로 필 터 를 지원 합 니 다.필 터 는 기록 기와 도 연결 할 수 있다.Logback 과 달리 이 모든 상황 에서 일반적인 Filter 류 를 사용 할 수 있 습 니 다.
    플러그 인 구조
    Log4j 는 플러그 인 모드 로 구성 요 소 를 설정 합 니 다.따라서 Appender,Layout,Pattern Converter 등 을 만 들 고 설정 할 코드 를 만 들 필요 가 없습니다.설정 한 상태 에서 Log4j 는 플러그 인 을 자동 으로 식별 하고 사용 합 니 다.
    쓰레기 없 는 메커니즘
    안정 적 인 로그 기록 기간 에 Log4j 2 는 독립 된 응용 프로그램 에서 쓰레기 가 없고 웹 응용 프로그램 에서 쓰레기 가 적 습 니 다.이 는 쓰레기 수집 기의 압력 을 줄 이 고 더 좋 은 응답 성능 을 제공 할 수 있다.
    Log4j 2 사용 하기
    인용 의존
    일반 항목 에서 Log4j 2 를 사용 하려 면 최소한 인용log4j-api-2.xlog4j-core-2.x두 개의 jar 가방 이 필요 합 니 다.
    <dependency>
        <groupId>org.apache.logging.log4jgroupId>
        <artifactId>log4j-coreartifactId>
        <version>2.12.0version>
    dependency>
    
    <dependency>
        <groupId>org.apache.logging.log4jgroupId>
        <artifactId>log4j-apiartifactId>
        <version>2.12.0version>
    dependency>
    

    spring boot 프로젝트 에 Log4j 2 사용 하기
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-webartifactId>
        
        <exclusions>
            <exclusion>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-loggingartifactId>
            exclusion>
        exclusions>
    dependency>
    
    
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-log4j2artifactId>
    dependency>
    

    작은 편집 은 사용 중 에 일부 구 덩이 를 만 나 spring-boot-starter 와 spring-boot-starter-web 의존 도 를 도입 할 때 spring-boot-starter 에서 spring-boot-starter-logging 의존 도 를 제거 해 야 합 니 다.spring-boot-starter-web 는 spring-boot-starter 에 의존 하기 때문에 Maven 의존 관계 에 따라spring-boot-starter 에서 spring-boot-starter-logging 의존 을 제거 해 야 성공 을 배제 할 수 있 습 니 다.
    프로필 추가
    기본적으로 Log4j 2 는 classpath 에서log4j2.xml라 는 프로필 을 찾 습 니 다.자바 시작 명령 을 사용 하여 프로필 의 모든 경 로 를 지정 할 수 있 습 니 다.-Dlog4j.configurationFile=opt/demo/log4j2.xml자바 코드 로 프로필 경 로 를 지정 할 수 있 습 니 다.
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.core.LoggerContext;
    
    import java.io.File;
    
    public static void main(String[] args) {
    
        LoggerContext loggerContext = (LoggerContext) LogManager.getContext(false);
        File file = new File("opt/demo/log4j2.xml");
        loggerContext.setConfigLocation(file.toURI());
    
    }
    

    동기 로그,혼합 로그 와 비동기 로그 설정 상세 설명
    Log4j 2 동기 로그,혼합 로그 와 비동기 로그 설정 상세 설명
    프로필 설명
    Log4j 2 프로필 상세 설명
    질문Root의 로그 에Logger의 로그 정보 가 포함 되 어 있 고AppenderRef같은 설정 이 라면 로 그 는 두 번 인쇄 됩 니 다.
    이것 은 log4j 2 계승 메커니즘 의 문제 입 니 다.Log4j 2 에서 logger 는 계승 관계 가 있 습 니 다.root 는 루트 노드 입 니 다.log4j 2 에서 additivity 의 속성 이 있 습 니 다.이것 은 하위 Logger 가 부모 Logger 의 출력 원(appender)의 속성 을 계승 하 는 지 여부 입 니 다.구체 적 으로 말 하면 기본적으로 Logger 는 부모 Logger 의 appender 를 계승 합 니 다.즉,하위 Logger 는 부모 Logger 의 appender 에서 출력 합 니 다.additivity 가 false 로 설정 되면 하위 Logger 는 부모 Logger 의 appender 에서 만 출력 되 고 부모 Logger 의 appender 에서 출력 되 지 않 습 니 다.
    이러한 전달 성 을 깨 려 면 매우 간단 합 니 다.logger 에 additivity="false"를 추가 하면 다음 과 같 습 니 다.
    
    <Configuration>
        <Appenders>
            <Console name="Console">
                <PatternLayout>
                    <Pattern>%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] %-5level %logger{0} - %msg%nPattern>
                PatternLayout>
            Console>
        Appenders>
        <Loggers>
            
            <Logger name="com.jourwon" level="debug" additivity="false">
                <AppenderRef ref="Console"/>
            Logger>
            <Root level="error">
                <AppenderRef ref="Console"/>
            Root>
        Loggers>
    Configuration>
    

    Lombok 도 구 를 사용 하여 Logger 클래스 를 간소화 합 니 다.
    lombok 은 주석 도구 jar 패키지 로 복잡 한 코드 를 생략 하 는 데 도움 을 줄 수 있 습 니 다.구체 적 인 소 개 는 제 블 로그 Lombok 소개,사용,작업 원리,장단 점 을 볼 수 있 습 니 다.
    Lombok 을 사용 한 후@Slf4j 주 해 는 로그 로그 상수 가 생 성 되 었 습 니 다.로그 하 나 를 설명 하지 않 아 도 클래스 에서 로그 기록 로 그 를 사용 할 수 있 습 니 다.
    @Slf4j
    public class Log4jTest {
      
        public static void main(String[] args) {
            log.error("Something else is wrong here");
        }
        
    }
    

    좋은 웹페이지 즐겨찾기