Log4j 초보 자 빠 른 입문 강좌
Log4J Apache 의 오픈 소스 프로젝트 입 니 다. http://jakarta.apache.org/log4j)프로젝트 에서 Log4J 를 사용 하면 로그 정 보 를 콘 솔,파일,GUI 구성 요소,심지어 데이터베이스 에 출력 하 는 것 을 제어 할 수 있 습 니 다.모든 로그 의 출력 형식 을 제어 할 수 있 습 니 다.로그 의 출력 단 계 를 정의 함으로써 로그 의 출력 과정 을 더욱 유연 하 게 제어 할 수 있 습 니 다.프로젝트 의 디 버 깅 을 편리 하 게 하 다.
결성
Log4J Loggers(로그 기록 기),Appenders(출력 단),Layout(로그 포맷 기)로 구성 되 어 있 습 니 다.그 중에서 Loggers 는 로그 의 출력 단계 와 로그 의 출력 여 부 를 제어 합 니 다.Appenders 가 지정 한 로그 의 출력 방식(콘 솔,파일 등 으로 출력);Layout 로그 정보의 출력 형식 을 제어 합 니 다.
로그 수준
Log4J 는 org.apache.log4j.Level 클래스 에서 OFF,FATAL,ERROR,WARN,INFO,DEBUG,ALL 7 가지 로그 단 계 를 정의 합 니 다.
Appender(출력 단자)
Appender 는 로그 가 어디로 출력 되 는 지 지정 하 는 데 사용 되 며 로그 의 출력 목적 지 를 동시에 지정 할 수 있 습 니 다.Log4j 에서 자주 사용 하 는 출력 목적 지 는 다음 과 같은 몇 가지 가 있 습 니 다.
레이아웃(로그 포맷 기)
쾌속 입문
먼저 maven 에 log 4 j 의 의존 도 를 도입 합 니 다.
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
Log4jTest 클래스 를 만 들 고 Log4j 의 사용 을 테스트 합 니 다:
public class Log4JTest {
public static void main(String[] args) {
// Logger
Logger logger = Logger.getLogger(Log4JTest.class);
// , log4j.properties
BasicConfigurator.configure();
// WARN, , WARN
logger.setLevel(Level.WARN);
logger.debug(" debug");
logger.info(" info");
logger.warn(" warn");
logger.error(" error");
logger.fatal(" fatal");
}
}
여기 서 먼저 Logger.getLogger(Log4Test.class)를 통 해 Logger 인 스 턴 스 를 만 든 다음 Basic Configurator.configure()방법 으로 이 Logger 가 기본 설정 정 보 를 사용 하도록 지정 한 다음 looger.setLevel(Level.WARN)을 호출 하여 Logger 의 로그 출력 단 계 를 WARN 으로 설정 합 니 다.main 함 수 를 실행 하면 콘 솔 에서 warn 이상 의 오류 정 보 를 출력 합 니 다.콘 솔 출력 은 다음 과 같 습 니 다.0[main]WARN com.huang.log4j.Log4JTest-warn 입 니 다.
0[main]WARN com.huang.log4j.Log4JTest-error 입 니 다.
0[main]WARN com.huang.log4j.Log4JTest-fatal 입 니 다.
주:Basic Configurator.configure()방법 이 호출 되 지 않 으 면 main 함 수 를 실행 할 때 오류 가 발생 합 니 다.Log4j 프레임 워 크 가 실 행 될 때 프로젝트 경로 에 있 는 log4j.properties 설정 파일 을 불 러 오기 때 문 입 니 다.지금 우리 프로젝트 에는 이 파일 이 없습니다.설정 파일 의 이름 이 log4j.properties 가 아니라면 Property Configurator.configure(String configFilename)를 통 해 설정 파일 의 이름 을 지정 할 수 있 습 니 다.
포맷 기 사용
Log4JTest 의 코드 수정:
public class Log4JTest {
public static void main(String[] args) {
Logger logger = Logger.getLogger(Log4JTest.class);
BasicConfigurator.configure();
HTMLLayout layout = new HTMLLayout();
// SimpleLayout layout = new SimpleLayout();
try {
FileAppender appender = new FileAppender(layout, "D:\\out.html", false);
logger.addAppender(appender);
// info, , WARN
logger.setLevel(Level.WARN);
logger.debug(" debug");
logger.info(" info");
logger.warn(" warn");
logger.error(" error");
logger.fatal(" fatal");
} catch (IOException e) {
e.printStackTrace();
}
}
}
먼저 HTML 형식의 포맷 기(HTML Layout)를 만 든 다음 파일 출력 단(FileAppender)이 지정 한 출력 단의 형식 을 HTML 형식 으로 만 듭 니 다.여기 서 출력 경 로 를 D 디스크 의 out.html 파일 로 지정 합 니 다.그리고 logger.addAppender(appender)를 통 해 파일 출력 단 을 Logger 에 불 러 옵 니 다.main 함 수 를 실행 하면 D 디스크 에서 out.html 파일 을 생 성하 고 파일 을 엽 니 다.그 안에 있 는 정 보 는 코드 에서 출력 한 로그 정보 입 니 다.log4j.properties 프로필 사용
위 에서 코드 를 사용 하여 Logger 의 출력 형식 을 설정 합 니 다.그러면 출력 로그 의 클래스 마다 설정 을 한 번 씩 설정 해 야 합 니 다.너무 번 거 롭 습 니 다.프로젝트 경로 에서 log4j.properties 설정 파일 을 새로 만 들 고 로그 의 출력 형식 등 정 보 를 설정 하면 Log4J 프레임 워 크 는 자동 으로 설정 파일 을 불 러 오고 설정 정 보 를 Logger 에 설정 합 니 다.가장 간단 한 프로필 은 다음 과 같 습 니 다.
#
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
#
log4j.appender.A = org.apache.log4j.DailyRollingFileAppender
log4j.appender.A.File = D:/log.txt #
log4j.appender.A.Append = true
log4j.appender.A.Threshold = DEBUG
log4j.appender.A.layout = org.apache.log4j.PatternLayout #
log4j.appender.A.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n #
log4j.appender.A.encoding=UTF-8 #
#
log4j.rootLogger=DEBUG,Console,A
log4j.properties 설정 파일 에서 로그 출력 단계 와 출력 단 을 정의 하고 출력 단 에서 각각 로그 의 출력 형식 을 설정 합 니 다.log4j 는 C 언어 와 유사 한 printf 함수 의 인쇄 형식 으로 로그 정 보 를 포맷 합 니 다.구체 적 인 자리 표시 자 와 그 의 미 는 다음 과 같 습 니 다.
%m 출력 코드 에서 지정 한 로그 정보
%p 출력 우선 순위 및 DEBUG,INFO 등
%n 줄 바 꿈 문자(윈도 플랫폼 의 줄 바 꿈 문 자 는"",유 닉 스 플랫폼 은"")
%r 출력 은 응용 프로그램 에서 시작 하여 이 로그 정 보 를 출력 하 는 데 걸 리 는 밀리초 입 니 다.
%c 출력 출력 문 에 속 하 는 클래스 의 전체 이름
%t 이 로 그 를 만 드 는 스 레 드 의 전체 이름 을 출력 합 니 다.
%d 출력 서버 의 현재 시간,기본 형식 은 ISO 8601 이 며,뒤에 형식 을 지정 할 수도 있 습 니 다.예:%d{yyy 년 MM 월 dd 일 HH:mm:ss}
%l 출력 로그 시간 에 발생 하 는 위 치 는 클래스 이름,발생 하 는 스 레 드,그리고 코드 에 있 는 줄 수 를 포함 합 니 다.예 를 들 어 Test.main(Test.java:10)
%F 출력 로그 메시지 가 생 성 되 었 을 때 있 는 파일 이름
%L 출력 코드 의 줄 번호
%x 현재 스 레 드 와 연 결 된 NDC 출력(내장 진단 환경)
%% "%"문 자 를 출력 합 니 다.
%와 문자 사이 에 장식 부 호 를 추가 하여 최소 너비,최대 너비 와 텍스트 의 방식 을 제어 할 수 있 습 니 다.예:
%5c 출력 category 이름,최소 폭 은 5,category<5,기본 값 으로 오른쪽 정렬
%-5c 출력 category 이름,최소 폭 은 5,category<5,"-"번 호 는 왼쪽 정렬 을 지정 하면 빈 칸 이 있 습 니 다.
%.5c category 이름 을 출력 합 니 다.최대 폭 은 5,category>5 입 니 다.왼쪽 에 있 는 문 자 를 자 릅 니 다.<5 는 빈 칸 이 없습니다.
%20.30c category 이름<20 빈 칸 을 보충 하고 오른쪽 정렬,>30 자 는 왼쪽 에서 멀리 판 매 된 문 자 를 차단 합 니 다.
그리고 테스트 클래스 Log4JTest.java 를 작성 합 니 다:
public class Log4JTest {
public static void main(String[] args) {
// Logger
Logger logger = Logger.getLogger(Log4JTest.class);
logger.debug(" debug");
logger.info(" info");
logger.warn(" warn");
logger.error(" error");
logger.fatal(" fatal");
}
}
프로그램 실행 후 콘 솔 출력 텍스트:2018-07-12 14:36:36,114 [main] WARN [com.huang.log4j.Log4JTest]-warn 입 니 다.
2018-07-12 14:36:36,114[main]ERROR[com.huang.log4j.Log4JTest]-error 입 니 다.
2018-07-12 14:36:36,114[main]FATAL[com.huang.log4j.Log4JTest]-fatal 입 니 다.
D 디스크 에 log.txt 파일 을 생 성 합 니 다.텍스트 내용 은 다음 과 같 습 니 다.
총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring Boot에서 log4j 로깅 방법Spring Boot은 모든 내부 로그에 Commons Logging을 사용하지만, 기본 설정은 Java Util Logging, Log4J, Log4J2, Logback과 같은 일반적인 로그를 지원합니다.각 Log...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.