티스토리 뷰
Log4j는 자바기반의 로깅 유틸리티로, Apache에서 만든 오픈소스 라이브러리다.
무슨 동작 같은걸 할 때 log를 찍어준다.
- 자바 어플리케이션 개발시 효과적인 로깅을 위한 오픈 소스 프로젝트
- 현재 버전은 1.X 정식 버전과 2.0 베타 버전으로 2가지 버전으로 존재
- 프로그래밍내에서 직접 설정 또는 설정파일(properties 또는 xml) 설정 2가지 방법 존재
- 각 레벨별로 지정가능하고 지정한 등급 이상의 로그만 저장
- 어플리케이션에서 각 클래스는 각각의 로거를 가지거나 공통의 로거를 가질 수 있음
- 모든 로거가 상속할 수 있는 루트 로거를 제공
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %5p [%c] %m%n" />
</layout>
</appender>
<appender name="console-infolog" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %5p %m%n" />
</layout>
</appender>
<!-- Application Loggers -->
<logger name="first" additivity="false">
<level value="debug" />
<appender-ref ref="console"/>
</logger>
<!-- Query Loggers -->
<logger name="jdbc.sqlonly" additivity="false">
<level value="INFO"/>
<appender-ref ref="console-infolog"/>
</logger>
<logger name="jdbc.resultsettable" additivity="false">
<level value="INFO"/>
<appender-ref ref="console"/>
</logger>
<!-- Root Logger -->
<root>
<priority value="off"/>
<appender-ref ref="console" />
</root>
</log4j:configuration>
log4j는 1과 2가 있다.
log4j VS log4j2
당연히 뒤에나온 log4j2 가 성능과 기능면에서 뛰어나다.
그리고 Logback 설계에 내제한 문제를 수정하면서 많은 향상된 기능을 제공한다.
log4j 는 log4j.xml 을 이용해서 설정하는 경우와 log4j.properties 를 이용해서 설정하는 방법이다.
그러나 log4j2 는 log4j2.xml 을 이용해서 설정하여야 한다. ( log4j.properties 를 사용하는 방법은 지원하지 않는다)
API 의 분리(API Separation)
Log4j 를 위한 API 는 어플리케이션 개발자를 위해 깔끔하게 분리되어서 구현되었다. 클래스들과 함수들은 호환성을 보장 받고 사용할 수 있다. 이것은 Log4j 팀이 안전하고 호환성 있는 방식으로 구현을 향상시킬 수 있다.
향상된 수행력(Improved Performance)
Log4j2 는 LMAX Disruptor 라이브러리에 기초를 둔 차세대 비동기 로거를 포함한다. 다중 쓰레드 비동기 로거에서 Log4j 1.x 와 Logback 보다 10배 빠른 처리량과 짧은 처리속도를 가진다. 자산한 내용은 비동기 로거 능률을 참조하라. 또한, Log4j2 은 중요한 영역과 Logback 에서의 유사한 대부분의 상황에서 Log4j 1.x 보다 빠르다. 저 자세한 정보는 수행력을 확인하라.
* LMAX Disruptor : 고성능 쓰레드 간 통신(메시징) 라이브러리
다양한 API들을 위한 지원(Support for multiple APIs)
Log4j2 API 는 최고의 성능을 제공하는 반면, Log4j2 는 SLF4J 와 Commons Logging APIs 를 위한 지원을 제공한다.
환경설정의 자동적 재호출(Automatic Reloading of Configurations)
Logback 처럼, Log4j2 는 환경설정이 변경되었을 때 자동적으로 재호출 한다. Logback 과 다른 점은 환경설정이 변경되고 있을 때 로그 이벤트를 잃어 버리지 않고 수행한다.
향상된 필터링(Advanced Filtering)
Logback 처럼, Log4j2 는 데이터 문맥, 마커들, 정규 표현식 그리고 로그 이벤트의 다른 요소들에 대해 필터링을 제공한다. 필터링은 로거에 전달되기 전 또는 Appenders 를 통과하는 모든 이벤트에 지정해서 적용할 수 있다. 게다가, 필터들은 로거와 연관되어 있다. Logback 과 다른점은 어떠 이러한 상황에서도 공통 Filter 클래스를 사용할 수 있다.
플러그인 구조 (Plugin Architecture)
Log4j 는 설정 요소로 플러그인 패턴을 사용한다. 이를테면, Appender, Layout, Pattern Converter, 그리고 기타 등등 의 설정을 위해 코드를 작성할 필요가 없다. Log4j 는 플러그인을 추천하고 설정이 호출(참조) 되었을 때 그것 을 사용한다.
속성 지원 (Property Support)
설정에서 속성들을 참조 할 수 있다. Log4j 는 직접적으로 그것들을 바꿀 것이다. 또는 동적으로 해결 하는 기본 구성 요소로 전달한다. 속성은 설정 파일, 시스템 설정, 환경 변수 ThreadContext Map(MDC) 그리고 이벤트에서의 데이터 제공으로 부터 온다. 사용자는 Lookup 플러그인을 추가해서 사용자 정의 속성 제공 기능을 사용할 수 있다.
문서 (Documentation)
요구사항 (Requirements)
Log4j2 는 Java 6 버전에 요구된다. 몇 기능은 추가적으로 의존(dependencies) 한다; 이러한 긴으에 대한 문서는 의존(dependencies) 를 지정한다.
News
Log4j 는 테스팅을 위해 사용가능하다. Log4j2 를 위한 API 는 Log4j 1.x 를 호환하지 않지만, 어뎁터는 어플리케이션이 Log4j 1.x API를 지속적으로 사용할 수 있도록 한다. 어댑터는 아파치 Commons Logging 과 SLF4J 을 사용 가능하다.
'spring 스프링' 카테고리의 다른 글
webapp / WEB-INF 의 차이 (0) | 2017.07.22 |
---|---|
log4j 2 설정 (0) | 2017.07.22 |
스프링4.0 설정하기 (0) | 2017.07.22 |
DAO (0) | 2017.07.22 |
데이터베이스 경로 수정 (0) | 2017.07.22 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 르프리크
- SQL
- jstree
- 터미널
- html
- 조직도관리
- 성수밥
- Oracle
- 아파치
- 메뉴관리
- 최고심
- 맥
- Tomcat
- tree로만들기
- 힘냉면록
- input
- 이클립스
- Apach
- 성수뚝떡
- Mac
- node관리
- 위잇딜라이트
- floating button
- Eclipse
- 정규식
- server.xml
- 톰캣
- Lalavel
- 토라식당
- 오라클
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함