1. 구성 파일
Log4J 구성 파일의 기본 형식은 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다 .
#루트 로거 구성
log4j.rootLogger = [레벨] ,appenderName1,appenderName2,...
#로그 정보 출력 대상 Appender 구성
log4j.appender.appenderName = full.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = 값1
…
log4j.appender.appenderName.optionN = 값N
#로그 정보의 형식(레이아웃)을 구성합니다.
log4j.appender.appenderName.layout = 완전히.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = 값1
…
log4j.appender.appenderName.layout.optionN = 값N
[level]이 로그 출력 레벨인 경우 총 5개의 레벨이 있습니다.
다음과 같이 코드 코드를 복사합니다 .
치명적 0
오류 3
경고 4
정보 6
디버그 7
Appender는 로그 출력 대상입니다. Log4j에서 제공하는 Appender에는 다음이 포함됩니다.
다음과 같이 코드 코드를 복사합니다 .
org.apache.log4j.ConsoleAppender(콘솔),
org.apache.log4j.FileAppender(파일),
org.apache.log4j.DailyRollingFileAppender(매일 로그 파일 생성),
org.apache.log4j.RollingFileAppender (파일 크기가 지정된 크기에 도달하면 새 파일 생성),
org.apache.log4j.WriterAppender(스트리밍 형식의 로그 정보를 지정된 위치로 전송)
레이아웃: Log4j에서 제공하는 레이아웃은 다음과 같습니다.
org.apache.log4j.HTMLLayout(HTML 테이블 형식의 레이아웃),
org.apache.log4j.PatternLayout(레이아웃 패턴을 유연하게 지정할 수 있음)
org.apache.log4j.SimpleLayout(로그 정보의 수준 및 정보 문자열 포함),
org.apache.log4j.TTCCLayout (로그 생성 시간, 스레드, 카테고리 등 정보 포함)
인쇄 매개변수: Log4J는 C 언어의 printf 함수와 유사한 인쇄 형식을 사용하여 다음과 같이 로그 정보 형식을 지정합니다.
다음과 같이 코드 코드를 복사합니다 .
%m 코드 %p에 지정된 메시지를 출력합니다. 출력 우선순위, 즉 DEBUG, INFO, WARN, ERROR, FATAL
%r 애플리케이션 시작부터 로그 정보 출력까지 걸린 시간(밀리초)을 출력합니다. %c 해당 카테고리가 속한 카테고리를 출력합니다. 일반적으로 클래스의 전체 이름입니다. %t 로그 이벤트를 생성한 스레드의 이름을 출력합니다. %n 캐리지 리턴 및 라인 피드 문자를 출력합니다. Windows 플랫폼은 "/r/n", Unix 플랫폼은 "/n"
%d는 로그 시점의 날짜 또는 시간을 출력합니다. 기본 형식은 ISO8601입니다. %d{yyy MMM dd HH:mm:ss, SSS}와 같이 나중에 형식을 지정할 수도 있습니다. : 2002년 10월 18일. 22:10:28, 921
%l 카테고리 이름, 발생한 스레드, 코드의 줄 번호를 포함하여 로그 이벤트가 발생한 위치를 출력합니다. 예: Testlog4.main(TestLog4.java: 10)
2. 코드에서 로거 초기화: 1) 프로그램에서 BasicConfigurator.configure() 메소드를 호출합니다. 루트 레코더에 ConsoleAppender를 추가하고 PatternLayout을 통해 출력 형식을 "%-4r [%t] %-5p %c %x - %m%n"으로 설정합니다. , 또한 루팅된 로거의 기본 레벨은 Level.DEBUG입니다.
2) 구성이 파일에 배치되고 파일 이름이 명령줄 매개변수를 통해 전달되며 PropertyConfigurator.configure(args[x])를 통해 구문 분석 및 구성됩니다.
3) 구성은 파일에 배치되고, 파일 이름 및 기타 정보는 환경 변수를 통해 전달되며, log4j의 기본 초기화 프로세스를 사용하여 구문 분석 및 구성합니다.
4) 구성이 파일에 배치되고 파일 이름 및 기타 정보가 애플리케이션 서버 구성을 통해 전달되며 특수 서블릿을 사용하여 구성을 완료합니다.
3. 다양한 어펜더에 대한 로그 출력 수준을 설정합니다.
시스템을 디버깅할 때 예외 수준의 로그 출력에만 주의를 기울이는 경우가 많지만 일반적으로 로그 출력 수준이 BUG!이면 모든 수준의 출력이 하나의 파일에 배치됩니다. ? 그럼 천천히 찾아보세요.
이때, 예외 정보를 별도로 파일로 출력할 수 있으면 참 좋겠다는 생각이 들 수도 있습니다. 물론 Log4j는 이미 이러한 기능을 제공합니다. 이를 달성하려면 다음 예와 같이 구성에서 Appender의 임계값만 수정하면 됩니다.
[구성 파일]
다음과 같이 코드 코드를 복사합니다 .
### 로그 수준 설정 ###
log4j.rootLogger = 디버그, 표준 출력, D, E
###콘솔로 출력###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n
### 로그 파일로 출력###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = 로그/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG ## DEBUG 수준 이상의 로그 출력
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 예외 정보를 별도의 파일에 저장###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = 로그/error.log ## 예외 로그 파일 이름
log4j.appender.D.Append = true
log4j.appender.D.Threshold = ERROR ## ERROR 수준 이상의 로그만 출력합니다!!!
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
[코드에 사용됨]
공개 클래스 TestLog4j {
공개 정적 무효 메인(String[] args) {
PropertyConfigurator.configure( " D:/Code/conf/log4j.properties " );
로거 logger = Logger.getLogger(TestLog4j.class );
logger.debug( " 디버그 " );
logger.error( " 오류 " );
}
}
실행하여 예외 정보가 별도의 error.log 파일에 저장되어 있는지 확인하세요.