어떻게 사용 하 는 log4j 를 logback 으로 바 꿉 니까?

4706 단어 logbacklog4j
머리말
최근 에는 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 를 초기 화하 여 최종 로그 의 출력 에 도달 합 니 다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 댓 글 을 남 겨 주 십시오.

좋은 웹페이지 즐겨찾기