어떻게 사용 하 는 log4j 를 logback 으로 바 꿉 니까?
최근 에는 log4j 가 오랫동안 업데이트 되 지 않 고 성능 이 상대 적 으로 약 하 며 일부 프로젝트 자체 의 원인 을 고려 하여 비교적 신중 한 고려 를 거 쳐 logback 으로 바 꾸 기로 결정 했다.만약 당신 이 이미 log4j 에 대해 잘 알 고 있다 면,당신 도 곧 logback 을 시작 할 수 있 습 니 다.만약 당신 이 log4j 를 사용 하 는 것 을 좋아한다 면,당신 은 logback 을 사용 하 는 것 에 빠 질 것 입 니 다.이전 은 비교적 순 조 롭 습 니 다.한 시간 정도 걸 려 서 끝 냈 습 니 다.간단 한 필 기 를 하 세 요.
방법 은 아래 와 같다.
(1)먼저 모든 log4j 와 관련 된 의존 을 없 애고 주로:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
그리고:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
(2)항목 에 다음 과 같은 의존 도 를 추가 합 니 다.
<!-- logback -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
</dependency>
<!-- logback -->
(3)항목/src/main/resources 디 렉 터 리 에 있 는 log4j.properties 를 삭제 하고 이 디 렉 터 리 에 logback.xml 파일 을 추가 합 니 다.logback.xml 파일 은 다음 과 같 습 니 다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<Target>System.out</Target>
<encoder>
<pattern>%date [%level] [%thread] %logger{80} [%file : %line] %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>%date [%level] [%thread] %logger{80} [%file : %line] %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.home}/logs/yzf/sql%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 30 , -->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
</appender>
<logger name="org.springframework" level="INFO" />
<logger name="org.apache" level="INFO" />
<logger name="com.itmuch" level="WARN" />
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
</configuration>
넓히다slf4j-api,slf4j-log4j 12 및 log4j 는 어떤 관계 입 니까?
거의 모든 jar 가방 에서 log4j 의 모습 을 볼 수 있 습 니 다.여러 개의 키 프로젝트 구성 프로젝트 에서 slf4j 와 관련 된 충돌 이 수시로 튀 어 나 와 기분 나 쁘 게 합 니 다.그러면 slf4j-api,slf4j-log4j 12 와 log4j 는 어떤 관계 입 니까?제 가 아 는 것 을 여러분 과 간단하게 공유 하 겠 습 니 다.
slf4j:Simple Logging Facade for Java,자바 에 제공 하 는 간단 한 로그 Facade.Facade:얼굴,좀 더 밑 에 있 으 면 인터페이스 예요.그 는 사용자 가 자신의 취향 으로 프로젝트 에서 slf4j 를 통 해 다른 로그 시스템 에 접속 하도록 허락 했다.좀 더 직관 적 으로 slf4j 는 데이터 라인 으로 한쪽 은 프로그램 에 삽입 되 고 다른 한쪽 은 로그 시스템 에 연결 되 어 프로그램의 정 보 를 로그 시스템 에 가 져 와 기록 할 수 있 습 니 다.
따라서 slf4j 입 구 는 여러 인터페이스의 집합 입 니 다.그 는 구체 적 인 로그 실현 을 책임 지지 않 고 컴 파일 할 때 만 적당 한 로그 시스템 을 찾 아 연결 합 니 다.구체 적 으로 어떤 인터페이스 가 있 는 지 모두 slf4j-api 에 정의 되 어 있 습 니 다.slf4j-api 소스 코드 를 보면 Public final class LoggerFactory 류 를 제외 하고 모두 인터페이스 정의 임 을 알 수 있 습 니 다.따라서 slf4j-api 는 본질 적 으로 인터페이스 정의 이다.
다음 그림 은 그들 간 의 관 계 를 비교적 명확 하 게 묘사 했다.
시스템 이 로그 프레임 워 크 로 로그 4j 를 사용 할 때 호출 관계:
우선 시스템 은 로그 접속 인터페이스 로 slf4j-api 를 포함 합 니 다.
at compile 시 slf4j-api 중
public final class LoggerFactor
클래스 중private final static void bind()
방법 은 구체 적 인 로 그 를 찾 아 클래스 바 인 딩 을 실현 합 니 다.주로 통과 합 니 다.StaticLoggerBinder.getSingleton();
구문 호출slf4j-log4j 12:slf4j-api 와 log4j 사이 의 어댑터 를 연결 합 니 다.이 는 slf4j-apiz 에서 StaticLoggerBinder 인 터 페 이 스 를 실현 하여 컴 파일 할 때 slf4j-log4j 12 의
getSingleton()
방법 을 연결 시 켰 다.log4j:이것 은 구체 적 인 로그 시스템 입 니 다.slf4j-log4j 12 를 통 해 Log4j 를 초기 화하 여 최종 로그 의 출력 에 도달 합 니 다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 댓 글 을 남 겨 주 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Azure Application Insights에서 로그백 형식으로 출력Azure App Service에 배포된 Java 응용 프로그램에서 로그 출력을 위해 Logback을 사용합니다. Azure의 애플리케이션 진단 기능(애플리케이션 Insights)을 출력 목표로 설정합니다. 다음 내...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.