>  기사  >  Java  >  Log4j의 기본 사용법 소개

Log4j의 기본 사용법 소개

零下一度
零下一度원래의
2017-06-28 14:40:111942검색

간단한 구성

#指定logger
# 配置Logger组件 
# 设定Log4j的日志级别(error warn info  debug)
# 输出目的地(Console, logfile是appender的名字,是自己定义的,后面才赋予具体的含义)
log4j.rootLogger=debug, Console, logfile
###################################################################################################################
#指定appender(目的地)
#设定Logger的Console(appender的名字)的Appender类型为控制台输出
#org.apache.log4j.ConsoleAppender 表明 Console是控制台输出
log4j.appender.Console=org.apache.log4j.ConsoleAppender

#输出的格式
#设定Console的Appender布局Layout
#org.apache.log4j.PatternLayout(可以灵活地指定布局模式)包含选项:
#                     ConversionPattern=%m%n :指定怎样格式化指定的消息
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
#2009-09-29 07:30:43,265 INFO com.itcast.web.controller.SearchCdServlet.doGet() - e
log4j.appender.Console.layout.ConversionPattern=%d %p %c.%M() - %m%n

###################################################################################################################
#设定Logger的logfile(appender的名字)的Appender类型为文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.logfile=org.apache.log4j.RollingFileAppender

#设定文件的输出路径(指定文件的名字和路径,tomcat的启动路径)
log4j.appender.logfile.File=../logs/logstrore.log

#设定后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到logstrore.log.1文件
log4j.appender.logfile.MaxFileSize=2048KB

#Keep three backup files.指定可以产生的滚动文件的最大数
log4j.appender.logfile.MaxBackupIndex=4#设定logfile的Appender布局Layout
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p %c.%M() - %m%n
###################################################################################################################

Log4JIntroduction

Log4J는 Apache의 오픈 소스 프로젝트입니다. Log4J를 사용하여 로그 정보의 목적을 지정할 수 있습니다. 콘솔, 파일, CUI 구성요소, NT 이벤트 레코더 등의 출력 위치에서 각 로그의 출력 형식을 제어할 수도 있습니다. 또한, 로그 정보의 수준을 정의함으로써 로그 출력을 매우 세부적으로 제어할 수 있습니다. 가장 흥미로운 점은 이러한 기능을 애플리케이션 코드를 수정하지 않고도 구성 파일을 통해 유연하게 구성할 수 있다는 것입니다.

애플리케이션에 로그를 출력하는 데는 세 가지 목적이 있습니다.

l 코드의 변수 변경 사항을 모니터링하고 다른 애플리케이션의 통계 분석을 위해 주기적으로 데이터를 파일에 기록합니다.

l 향후 사용을 위한 참조로 코드 런타임 궤적을 추적합니다. for audit

l 통합 개발 환경에서 디버거 역할을 하며 코드의 디버깅 정보를 파일과 콘솔에 인쇄합니다.

프로그램에서 로그를 출력하려면 가장 일반적인 방법은 코드에 명령문을 삽입하는 것입니다. 로그는 콘솔이나 파일로 출력될 수 있습니다. 더 나은 접근 방식은 코드의 본문을 일련의 인쇄 문으로 가득 채우는 것보다 로그 작업 클래스를 구성하여 이러한 작업을 캡슐화하는 것입니다.

오늘날 재사용 가능한 구성 요소에 중점을 두고 재사용 가능한 로그 작업 클래스 이름을 처음부터 개발하는 것 외에도 Apache는 강력한 기성 로그 작업 패키지 Log4J를 제공합니다.

Log4J는 주로 세 가지 주요 구성 요소로 구성됩니다.

l 로거: 로그를 생성하고 로그 정보를 분류하고 필터링할 수 있는 역할을 담당합니다. 일반인의 관점에서 말하면 어떤 로그 정보가 출력되어야 하는지, 어떤 로그 정보가 출력되어야 하는지를 결정하는 것입니다. 무시

l Appender: 로그 정보 출력 대상을 정의하고 로그 정보가 출력되어야 하는 위치를 지정합니다. 이러한 장소는 콘솔, 파일, 네트워크 장치 등이 될 수 있습니다.

l 레이아웃: 로그 정보의 출력 형식을 지정합니다.

이 세 가지 구성 요소가 함께 작동하여 개발자는 로그 정보 범주에 따라 정보를 기록하고 프로그램 실행 중에 로그 정보의 출력 형식과 로그 저장 위치를 ​​제어할 수 있습니다.

Logger에는 여러 Appender가 있을 수 있습니다. 즉, 로그 정보가 동시에 여러 장치에 출력될 수 있습니다. 각 Appender는 레이아웃에 해당하며 레이아웃은 출력 로그 정보의 형식을 결정합니다.

실제 필요에 따라 프로그램이 실행 중인 콘솔에 로그 정보를 출력해야 한다고 가정하고, 로그 정보를 콘솔에 출력할 때는 SimplLayout 레이아웃, 이때 Logger, Appender, Layout 세 구성요소의 관계는 그림과 같습니다. 목적)

Log4J의 Appender 구성 요소는 로그 정보를 출력할 위치를 결정합니다. 현재 Log4J는 다음과 같은 목적으로 로그 정보 출력을 지원합니다.

l Console

l

File
l

GUI 컴포넌트

로거는 동시에 여러 Appender에 대응할 수 있습니다. 즉, Logger의 로그 정보는 동시에 여러 대상에 출력될 수 있습니다. 예를 들어, rootLogger에 대해 두 개의 Appender를 구성하려는 경우 하나는 파일이고 다른 하나는 콘솔입니다.

log4j.rootLogger =WARN,file,console rootLogger 로그 수준 및 출력 목적 구성 log4j.appender.file=org.apache.log4jRollingFileAppender

Log4j.appender.file=log.txt

log4j.appender.console=org.apache.log4j.ConsoleAppender

Layout 구성 요소
Layout 구성 요소는 로그의 출력 형식을 결정하는 데 사용됩니다.

l org.apache.log4j.HTMLLayout(HTML 테이블 형식의 레이아웃)

l org.apache 유형이 있습니다. log4j.PatternLayout (레이아웃 모드를 유연하게 지정할 수 있음)

l org.apache.log4j.SimpleLayout (로그 정보 수준 및 정보 문자열 포함)

l org.apache.log4j.TTCCLayout (로그 생성 시간, 스레드 및 범주 포함) 등 참고)

Log4j 기본 사용법

Log4J를 애플리케이션에서 사용하려면 먼저 Log4j의 다양한 구성 요소를 구성 파일에 구성한 후 프로그램에서 Log4JAPI를 통해 로그를 조작할 수 있습니다

구성 파일 정의
Log4J는 Logger, Appender 및 레이아웃의 세 가지 중요한 구성 요소로 구성됩니다. Log4J는 프로그램에서 이러한 구성 요소를 프로그래밍 방식으로 설정하는 것을 지원하고 구성 파일을 통해 구성 요소를 구성하는 것도 지원합니다.

Log4J는 두 가지 구성 파일 형식을 지원합니다. 하나는 XML 형식이고 다른 하나는 Java 속성 파일


1입니다. Logger 구성 요소 구성
구문은 다음과 같습니다.
​​​ log4j.rootLogger = [ level ] ,appenderName1,appenderName2, …

예:

Log4j.rootLogger =WARN,file,console


레벨: 로깅 우선순위이며 OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL 또는 사용자가 정의하는 레벨로 구분됩니다.

Log4j에서는 높은 수준부터 낮은 수준까지의 우선순위는 ERROR>WARN>INFO>DEBUG입니다. 여기에 정의된 레벨을 통해 로그 정보가 애플리케이션의 해당 레벨로 전환되는 것을 제어할 수 있습니다. 예를 들어 여기에서 예약하세요. INFO 레벨이 정의되면 애플리케이션의 모든 DEBUG 레벨 로그 정보가 인쇄되지 않습니다.

appenderName: 로그 정보가 출력되는 위치를 지정합니다. 동시에 여러 출력 대상을 지정할 수 있습니다.

모두: 모든 로그를 인쇄합니다.

끄기: 모든 로그를 닫습니다.
예: log4j.rootLogger=info,A1,B2,C3

2. ConfigurationAppenderComponent

구문은 다음과 같습니다. j.appender.appenderName =완전히.qualified.name.of.appender.class.

예:

log4j.appender.console=org.apache.log4j.ConsoleAppender

"완전히.qualified.name.of. appender.class"
다음 5개 대상 중 하나를 지정할 수 있습니다
:                                                                                               . 2.org.apache.log4j.FileAppender
(파일)[로그를 하나의 파일에만 출력할 수 있으며 권장하지 않음]
​​​ 3.org.apache.log4j.DailyRollingFileAppender
(매일 로그 파일 생성) 4.org.apache.log4j.RollingFileAppender
(파일 크기가 지정된 크기에 도달하면 새 파일 생성)
​​​ 5.org.apache.log4j.WriterAppender
(스트리밍 형식의 로그 정보를 지정된 위치로 전송)

A.ConsoleAppenderoption

Threshold=WARN: 로그 메시지 지정 가장 낮은 값 출력 수준. ImmediateFlush=true: 기본값은 true입니다. 이는 모든 메시지가 즉시 출력된다는 의미입니다. Target=System.err: 기본적으로: System.out, 출력 콘솔을 지정합니다

B.FileAppender Option
Threshold=WARN: 로그 메시지 출력의 가장 낮은 수준을 지정합니다.

ImmediateFlush=true: 기본값은 true입니다. 이는 모든 메시지가 즉시 출력된다는 의미입니다.

File=mylog.txt: mylog.txt 파일에 출력할 메시지를 지정합니다.
Append=false: 기본값은 true입니다. 이는 메시지가 지정된 파일에 추가됨을 의미하고, false는 메시지가

로 지정된 파일의 내용을 덮어쓴다는 의미입니다.
C.DailyRollingFileAppenderOptions
Threshold=WARN: 로그 메시지 출력의 가장 낮은 수준을 지정합니다.
           ImmediateFlush=true: 기본값은 true입니다. 이는 모든 메시지가 즉시 출력된다는 의미입니다.
File=mylog.txt: mylog.txt 파일에 출력할 메시지를 지정합니다.
             Append=false: 기본값은 true입니다. 이는 메시지가 지정된 파일에 추가됨을 의미하고, false는 메시지가 지정된

파일의 내용을 덮어쓴다는 의미입니다.
DatePattern='.'yyyy-ww: 일주일에 한 번 파일을 롤링합니다. 즉, 매주 새 파일을 생성합니다. 물론 월, 주, 일, 시간, 분을 지정할 수도 있습니다. 즉, 해당 형식은 다음과 같습니다.

                1)'.'yyyy-MM: 매달

              2)'.'yyyy-ww: 매주
               3)'.'yyyy-MM-dd: 매일
              4)'.'yyyy-MM-dd-a: 하루에 두 번
              5)'.'yyyy-MM-dd-HH: 매시간
               6)'.'yyyy-MM-dd-HH-mm: 매분

D.RollingFileAppender
Options                      Threshold=WARN: 로그 메시지 출력의 가장 낮은 수준을 지정합니다.
              ImmediateFlush=true: 기본값은 true이며, 이는 모든 메시지가 즉시 출력된다는 의미입니다.
                 File=mylog.log: mylog.txt 파일에 출력할 메시지를 지정합니다.
                             Append=false: 기본값은 true입니다. 이는 메시지가 지정된 파일에 추가됨을 의미하고, false는 메시지가 지정된

파일의 내용을 덮어쓴다는 의미입니다.

              MaxFileSize=100KB: 접미사는 KB, MB 또는 GB일 수 있습니다. 로그 파일이 이 크기에 도달하면 자동으로 스크롤됩니다. 즉, 원본 콘텐츠가 mylog.log.1 파일로 이동됩니다.

                MaxBackupIndex=2: 생성할 수 있는 최대 롤링 파일 수를 지정합니다.

3

, 로그 정보 형식 구성

구문은 다음과 같습니다.  1)

log4j.appender.appenderName.layout=full.qualified.name.of.layout.class
          " Fully.Qualified.name.of.layout.class" 다음
4 형식 중 하나를 지정할 수 있습니다. 예: log4j.appender.console.layout=org.apache.log4j.PatternLayout

       log4j.appender.console.layout.ConversionPattern=%d %p %c.%M()-%m%n

     1.org.apache.log4j.HTMLLayout(HTML 테이블 형식의 레이아웃)에는 다음 옵션이 포함됩니다.

LocationInfo=true: 기본값은 false, Java 파일 이름 및 줄 번호 출력

                  제목=내 앱 파일: 기본값은 Log4J 로그 메시지입니다.

   2.org.apache.log4j.PatternLayout(레이아웃 패턴을 유연하게 지정할 수 있음)에는 다음 옵션이 포함되어 있습니다.

변환 패턴=%m%n :지정된 메시지의 형식을 지정하는 방법을 지정합니다.

  3.org.apache.log4j.SimpleLayout (로그 정보의 수준 및 정보 문자열 포함)
    4.org.apache.log4j.TTCCLayout (로그 생성 시간, 스레드, 카테고리 등 정보 포함)
   2)log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
로그 정보 형식에 있는 여러 기호의 의미:
-X 숫자: 출력 시 X 정보는 왼쪽 정렬됩니다.
%p: 출력 로그 정보의 우선순위, 즉 DEBUG, INFO, WARN, ERROR, FATAL,
%d: 출력 로그 시점의 날짜 또는 시간, 기본 형식은 ISO8601입니다. 나중에 형식을 지정할 수도 있습니다. 예: %d{yyy MMM dd HH:mm:ss,SSS}, 출력은 10월 18일과 유사합니다. , 2002년 22:10:28,921
%r: 애플리케이션 시작부터 로그 정보 출력까지 걸린 시간(밀리초)을 출력합니다. %c: 출력 로그 정보가 속한 카테고리, 일반적으로 클래스의 전체 이름을 출력합니다. 로그 이벤트를 생성한 스레드 %l: 이벤트가 발생한 위치는 카테고리 이름과 발생한 스레드를 포함하여 %C.%M(%F:%L)의 조합과 동일합니다. . 그리고 코드의 줄 수. 예: Testlog4.main(TestLog4.java:10) %x: 현재 스레드와 관련된 NDC(중첩 진단 환경)를 출력합니다. 특히 Java 서블릿과 같은 다중 클라이언트 및 다중 스레드 애플리케이션에 사용됩니다.
      %%: "%" 문자 출력
    %F: 로그 메시지가 생성된 파일명 출력
    %L: 코드의 행 번호 출력
    %m: 코드에 지정된 메시지, 특정 로그 출력 정보 생성
%n: 캐리지 리턴 및 줄 바꿈 문자를 출력합니다(Windows 플랫폼의 경우 "rn", Unix 플랫폼의 경우 "n"). 출력 로그 정보 줄 바꿈

%M은 메소드 이름을 나타냅니다.
       


%와 패턴 문자 사이에 수정자를 추가하여 최소 너비, 최대 너비 및 텍스트 정렬을 제어합니다. 예: 1)%20c: 출력 카테고리의 이름을 지정합니다. 카테고리 이름이 20보다 작은 경우 최소 너비는 20입니다.       2)%-20c: 출력 카테고리의 이름을 지정합니다. 최소 너비는 20입니다. 카테고리 이름이 20보다 작은 경우 "-" 기호는 왼쪽 정렬을 지정합니다. 3)%.30c : 출력 카테고리 이름을 지정합니다. 최대 너비는 30입니다. 카테고리 이름이 30보다 크면 왼쪽의 추가 문자가 잘려지고, 30보다 작으면 나타납니다. 공백이 없습니다.       4)%20.30c: 카테고리 이름이 20자 미만인 경우 공백을 채우고 오른쪽 정렬합니다. 이름이 30자를 초과하는 경우 왼쪽에서 문자를 자릅니다.
프로그램에서 Log4J에 액세스하려면 Log4J JAR 파일을 사용해야 합니다.
프로그램에서 Log4J를 사용하는 과정은 다음과 같습니다.

l 로거 얻기

l 구성 파일 읽기 및 Log4J 환경 구성

l 로그 정보 출력

Log4J 학습에 들어가기 전에 필요한 사항 일반적인 내용을 이해하려면 로그 패키지에는 LogFactory와 Log라는 두 가지 공통 인터페이스가 있습니다. 해당 사용법은 아래에 소개되어 있습니다.

로그 인터페이스

범용 로그 패키지는 로그 메시지를 FATAL(치명적), ERROR(오류), WARN(경고), INFO(정보), DEBUG(디버깅) 및 TRACE(세부 사항)의 6가지 수준으로 나눕니다. 그 중 FATAL이 가장 높은 수준이고 TRACE가 가장 낮은 수준입니다. 일반 로그 패키지는 로그 수준 메커니즘을 사용하여 출력 로그 내용을 유연하게 제어합니다.

org.apache.commons.logging.Log 인터페이스는 로그 출력을 위한 일련의 메소드를 제공하는 로거를 나타냅니다.

l fatal(Object message): FATAL 수준의 로그 메시지를 출력합니다.

l 오류(객체 메시지): ERROR 수준의 로그 메시지를 출력합니다.

l …

l 추적(객체 메시지): TRACE 수준의 로그 메시지를 출력합니다.

위의 로그 출력 방법은 출력되는 로그의 수준이 해당 로그에 대해 구성된 로그 수준보다 크거나 같은 경우에만 실제로 실행됩니다. 예를 들어 로거의 로그 수준이 WARN이면 프로그램에서 fatal(), error() 및 warning() 메소드가 실행되고 info() , debug() 및 Trace() 메소드는 실행되지 않습니다.

로그 인터페이스는 특정 수준의 로그 메시지 출력이 허용되는지 여부를 결정하는 일련의 메서드도 제공합니다.

l isFatalEnabled()

l isErrorEnabled()

l ……

l isTraceEnabled()

프로그램이 특정 수준의 로그 메시지를 출력하기 전에 위 메소드를 호출하여 해당 수준의 로그 출력 허용 여부를 확인하는 것이 애플리케이션 성능 향상에 도움이 됩니다. 예를 들어 다음 코드는 먼저 StringBuffer에 로그 메시지를 추가하고 마지막으로 로거의 debug() 메서드를 호출하여 로그를 출력합니다.

StringBuffer buf = new StringBuffer();

buf.append("Login Successsul - ");

buf.append("이름:");

buf.append(username);

log.debug(buf.toString());

위 코드의 경우 로거가 실행되지 않는 경우 실제로 DEBUG 수준 로그의 출력을 허용하면 로거를 실행하는 debug() 메서드는 메시지를 출력하지 않습니다. 이때 StringBuffer에 메시지를 추가하는 일련의 작업은 중복됩니다. 성능을 향상시키기 위해 isDebugEnabled() 메서드를 합리적으로 사용하여 애플리케이션이 중복 작업을 수행하지 않도록 할 수 있습니다.

if(log.isDebugEnabled){

StringBuffer buf = new StringBuffer();

buf.append("로그인 성공 - ");

buf.append("이름:");

buf.append(사용자 이름);

log.debug(bug.toString()) ;

}

(이)LogFactoryInterface

org.apache.commons.logging.LogFactory 인터페이스는 로거 인스턴스를 얻기 위한 두 가지 정적 메서드를 제공합니다.

public static Log getLog(String 이름)은 LogConfigurationException을 발생시킵니다.

public static Log getLog(클래스 클래스)는 LogConfigurationException을 발생시킵니다.

첫 번째 getLog() 메소드는 name 매개변수를 로거 이름으로 사용합니다. 두 번째 getLog() 메소드는 클래스 매개변수로 지정된 클래스 이름을 로거 이름으로 사용합니다. 두 번째 getLog입니다. () 메소드 구현:

public static Log getLog(Class 클래스)가 throw합니다. LogConfigurationException{

getLog(class.getName); //call getLog(문자열 이름)

}

Summary

Log4J는 크게 Logger, Appender, Layout 3가지 구성요소로 구성됩니다. Logger는 로그 정보의 출력을 제어하고, Appender는 로그 정보의 출력 대상을 결정하며, Layout은 로그 정보의 출력 형식을 결정합니다. Log4J를 사용하면 사용자가 구성 파일에서 이러한 구성 요소를 유연하게 구성할 수 있습니다. 프로그램에서 Log4J를 사용하는 것은 매우 편리합니다. 먼저 로거를 얻은 다음 구성 파일을 읽고 Log4J 환경을 구성한 다음 Logger 클래스의 적절한 메서드를 호출하여 출력해야 할 때마다 로그를 생성할 수 있습니다. 프로그램에 로그인합니다.

위 내용은 Log4j의 기본 사용법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.