1.Log4j의 장점
Log4j는 Apache의 오픈 소스 프로젝트로, 로그 정보의 전달 위치를 제어할 수 있으며, 각 로그 정보의 수준을 정의하여 로그를 더 많이 제어할 수도 있습니다. 세부사항. 생성 과정. 가장 흥미로운 점은 애플리케이션 코드를 수정하지 않고도 구성 파일을 통해 유연하게 구성할 수 있다는 것입니다.
log4j의 이점은 다음과 같습니다.
(1) 구성 파일을 수정하여 로그 정보(콘솔, 파일, GUI 구성 요소, 심지어 소켓 서버, NT 이벤트 레코더, UNIX Syslog 데몬 등)의 대상을 결정할 수 있습니다.
(2) 구성 파일을 수정하여 각 로그 메시지의 레벨을 정의하여 출력 여부를 제어할 수 있습니다. 시스템 개발 단계에서는 상세한 로그 정보를 출력하여 시스템 동작을 추적할 수 있으며, 시스템이 안정화된 후에는 로그 출력을 꺼서 정크 코드(System.out.println(..)를 줄이면서 시스템 동작을 추적할 수 있습니다. ....)기다리다).
(3) log4j를 사용하려면 전체 시스템에 대한 통합 로그 메커니즘이 필요하며 이는 시스템 계획에 도움이 됩니다.
2. 구성 파일
Log4j는 로그 정보의 우선 순위, 로그 정보의 출력 대상, 로그 정보의 출력 형식이라는 세 가지 중요한 구성 요소로 구성됩니다. 로그 정보의 우선 순위는 FATAL, ERROR, WARN, INFO, DEBUG, TRACE 및 ALL을 포함하며 각각 이 로그 정보의 중요도를 지정하는 데 사용됩니다. 콘솔이나 파일에 인쇄되며 출력 형식은 로그 정보의 표시 내용을 제어합니다.
2.1 로그 정보의 우선순위
Log4j에서는 높은 수준부터 낮은 수준까지 ERROR, WARN, INFO 및 DEBUG의 4가지 수준만 사용할 것을 권장합니다. 여기에 정의된 수준을 통해 애플리케이션에서 해당 로그 정보 수준의 설정 및 해제를 제어할 수 있습니다. 여기서 INFO 수준을 정의하면 응용 프로그램에서 INFO 수준 아래의 모든 로그 정보가 인쇄되지 않습니다.
2.2 출력 소스의 사용
로깅 요청을 선택적으로 활성화하거나 비활성화하는 것은 Log4j 기능의 일부일 뿐입니다. Log4j를 사용하면 로깅 요청을 여러 출력 소스로 출력할 수 있습니다. Log4j 용어로 출력 소스를 Appender라고 합니다.
Appender에는 콘솔, 파일, GUI 구성 요소, 원격 소켓 서버, JMS, NT 이벤트 로거, 원격 UNIX Syslog 데몬(원격 UNIX 배경 로그 서비스)이 포함됩니다. 비동기적으로 녹음할 수도 있습니다. 로거는 둘 이상의 어펜더를 설정할 수 있습니다. addAppender 메소드를 사용하여 지정된 로거에 어펜더를 추가합니다. 특정 로거에 대해 유효한 각 로그 요청은 로거의 모든 추가자 및 로거 상위 로거의 추가자에게 전달됩니다.
2.2.1 ConsoleAppender
ConsoleAppender를 사용하면 로그 정보가 콘솔에 기록됩니다. 이 효과는 정보를 System.out에 직접 인쇄하는 것과 같습니다.
2.2.2 FileAppender
FileAppender를 사용하면 로그 정보가 지정된 파일에 기록됩니다. 이는 더 자주 사용되는 상황이어야 합니다. 따라서 로그 출력의 파일 이름은 구성 파일에 지정되어야 합니다. 다음 구성은 로그 파일 이름 log.txt를 지정합니다.
log4j.appender.appendername.File=log.txt 특정 구성에서 Appendername은 Appender의 별칭으로 대체됩니다.
참고: 지정된 로그 파일 경로에 문제가 있습니다.
2.2.3 DailyRollingAppender
FileAppender를 이용하면 로그 정보를 파일로 출력할 수 있지만, 파일이 너무 크면 읽기 불편하다. 이때 DailyRollingAppender를 사용할 수 있습니다. DailyRollingAppender는 로그 정보를 날짜별로 구분된 파일로 출력할 수 있습니다. 구성 파일은 매일 로그 파일을 생성하며(시간 설정 가능) 각 로그 파일은 해당 날짜의 로그 정보만 기록합니다.
다음과 같이 코드 코드를 복사합니다 .
log4j.appender.appendername=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Aappendername.file=로그
log4j.appender.appendername.DatePattern='.'yyyy-MM-dd
log4j.appender.appendername.layout=org.apache.log4j.PatternLayout
log4j.appender.appendername.layout.ConversionPattern= %5r %-5p %c{2} - %m%n
2.2.4 RollingFileAppender
파일 크기가 지정된 크기에 도달하면 새 파일이 생성됩니다.
다음과 같이 코드 코드를 복사합니다 .
og4j.appender.appendername=org.apache.log4j.RollingFileAppender
log4j.appender.appendername.파일= ../logs/rlog.log
#최대 로그 파일 크기 제어
log4j.appender.appendername.MaxFileSize=100KB
# 아카이브 로그 파일(여기서 백업 파일 하나)
log4j.appender.appendername.MaxBackupIndex=1
log4j.appender.appendername.layout=org.apache.log4j.PatternLayout
log4j.appender.appendername.layout.ConversionPattern=%p %t %c - %m%n
이 구성 파일은 회전 로그 파일인 출력 소스 Appendername을 지정합니다. 가장 큰 파일은 100KB입니다. 로그 파일이 최대 크기에 도달하면 Log4J는 자동으로 rlog.log의 이름을 rlog.log.1로 바꾼 다음 새 rlog.log 파일을 다시 작성하고 순서대로 회전합니다.
2.2.5 WriterAppender
로그 정보를 스트리밍 형식으로 지정된 위치로 보냅니다.
2.3 레이아웃 구성
레이아웃은 로그 정보 출력 스타일을 지정합니다.
2.3.1 레이아웃 스타일
다음과 같이 코드 코드를 복사합니다 .
org.apache.log4j.HTMLLayout(HTML 테이블 형식의 레이아웃),
org.apache.log4j.PatternLayout(레이아웃 패턴을 유연하게 지정할 수 있음)
org.apache.log4j.SimpleLayout(로그 정보의 수준 및 정보 문자열 포함),
org.apache.log4j.TTCCLayout (로그 생성 시간, 스레드, 카테고리 등 정보 포함)
2.3.2 형식
다음과 같이 코드 코드를 복사합니다 .
%m은 코드에 지정된 메시지를 출력합니다.
%p 출력 우선순위, 즉 DEBUG, INFO, WARN, ERROR, FATAL
%r 애플리케이션 시작부터 로그 정보 출력까지 걸린 시간(밀리초)을 출력합니다.
%c는 자신이 속한 카테고리(일반적으로 클래스의 전체 이름)를 출력합니다.
%t는 로그 이벤트를 생성한 스레드의 이름을 출력합니다.
%n은 캐리지 리턴 및 줄 바꿈 문자를 출력합니다. 이는 Windows 플랫폼에서는 "rn"이고 Unix 플랫폼에서는 "n"입니다.
%d는 로그 시점의 날짜 또는 시간을 출력합니다. 기본 형식은 ISO8601입니다. %d{yyy MMM dd HH:mm:ss,SSS}와 같이 나중에 형식을 지정할 수도 있습니다. : 2002년 10월 18일. 22:10:28,921
%l 카테고리 이름, 발생한 스레드, 코드의 줄 번호를 포함하여 로그 이벤트가 발생한 위치를 출력합니다. 예: Testlog4.main(테스트 Log4.java:10)
3. 다양한 Appender에 대한 로그 출력 수준 설정
이는 다음 예와 같이 구성에서 Appender의 임계값을 수정하여 달성할 수 있습니다.
구성 파일:
log4j.rootLogger = 디버그,A,B,C
#콘솔로 출력
log4j.appender.A = org.apache.log4j.ConsoleAppender
log4j.appender.A.Target = System.out
log4j.appender.A.layout = org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern = %p %t %c - %m%n
# 로그 파일로 출력
log4j.appender.B = org.apache.log4j.DailyRollingFileAppender
log4j.appender.B.File = 로그/log.log
log4j.appender.B.Append = true
log4j.appender.B.Threshold = DEBUG # EBUG 수준 이상의 로그 출력
log4j.appender.B.layout = org.apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern = %p %t %c - %m%n
# 예외 정보를 별도의 파일에 저장
log4j.appender.C = org.apache.log4j.DailyRollingFileAppender
log4j.appender.C.File = 로그/error.log #예외 로그 파일 이름
log4j.appender.C.Append = true
log4j.appender.C.Threshold = ERROR #ERROR 수준 이상의 로그만 출력
log4j.appender.C.layout = org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern = %p %t %c - %m%n
예:
다음과 같이 코드 코드를 복사합니다 .
공개 클래스 TestLog4j
{
공개 정적 무효 메인(문자열[] 인수)
{
PropertyConfigurator.configure("D:/Code/conf/log4j.properties");
로거 로거 = Logger.getLogger(TestLog4j.class);
logger.debug("디버그");
logger.error("오류");
}
}