Apache Log4j 2 상세 설명
17539 단어 로그
Apache Log4j 2 상세 설명
글 목록
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.x
과log4j-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");
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
소샤게 CS 워크 플로우 개선 바람 관리 화면 12/16로 투고2020/02/08 구성과 설계를 기재 안녕하세요, 코로나입니다. 이번에는 업무에 가깝지만 가상 포트폴리오를 준비해 보았습니다. 신규 개발팀 백엔드 2명 프런트 x명 기획 2명 운영팀 백엔드 1명 문의 겸 기획 1명...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.