이전 기사에서는 Java Log4J에 대한 자세한 자습서를 소개했습니다. 자세한 내용은 아래를 참조하십시오.
먼저 Log4J.jar 다운로드를 제공합니다 : http://logging.apache.org/log4j/1.2/download.html
1. Java 웹 프로젝트에는 Log4J를 사용하십시오
1. web.xml 파일을 추가하십시오
<!-log4j-> <countxt-param> <param-name> webApprootKey </param-name> <Param-value> com.hsinghsu.testssh.webapp.root </param-value> </contex t -param> <context-param> <param-name> log4jconfiglocation </param-name> <param-value> /web-inf/classes/log4j.properties </param-value> </context-par am> <context -Param> <Param-name> log4jrefreshinterval </param-name> <param-value> 600000 </param-value> </context-param>
2. log4j.properties 파일을 추가하십시오
log4j.rootcategory = info, stdout, r log4j.appender.stdout = org.apache.log4j.consoleappender log4j.appender.stdout.layout = org.apache.log4j.p atternlayout log4j.appender.stdout.layout.conversionpattern = [qc ]%p [%t]%C.%m (%l) | avatar .log ## linux 로그 파일 경로 #log4j.appender.r.file = $ {com.hsinghsu.testssh.webapp.root} /log/testlog.log ## Windows Logs 파일 경로 log4j.appender .r.file = d : //eclipsespace//testssh//webcontent//web-inf//testlog.log log4j.appender.r.layout = org.apache.log4j.patternlayout #log4j.appender.r.lay out.conversionpattern =%d - [ts] %p %t %c- %m %n #log4j.logger.com.neusoft = debug #debug #log4j.logger.com.opensymphony.oscache = error log4j.logger.net.sf.navigator = info #log4 j.logger .org.apache.commons = error #log4j.logger.org.apache.struts = Warn #log4j.logger.org.displaytag = error #log4j.logger.org.springframework = inf o # #log4j.logger. com.ibatis. db = warn #log4j.logger.org.apache.velocity = fatal #log4j.logger.com.canoo.wbtest = warn #log4j.logger.org.hibernate.ps.preparedStatementCache = WARN #log4J.logger. org.hibernate = debug log4j.logger.org.hibernate = info #log4j.logger.org.logicalcobwebs = warn
3. log4J를 사용하십시오
예를 들어, usererviceimpl.java에서 log4j를 사용하십시오.
com.hsinghsu.testssh.service.impl; dao .userdao; 최종 정적 로거 = logger.getLogger (userviceimpl.class); - userServiceimpl 로그인 메소드 이름 : "+name+"password : "+password); user user = userdao.getuserbyname (name); if (user! = null) {if (passwor d.equals (user.getpwd ()) {return true}} 거짓}}.
2. log4j.properties 매개 변수에 대한 자세한 설명
로그 수준은 디버그 (디버그 정보), 정보 (일반 정보), 경고 (경고 정보), 오류 (오류 정보) 및 치명적 (치명적인 오류 정보)으로 나뉩니다.
Log4J는 두 개의 구성 파일 형식을 지원합니다. 하나는 XML 형식 파일이고 다른 하나는 Java 속성 파일 Log4J.Properties입니다.
1. 루트 로거를 구성하십시오
Logger는 대부분의 로깅 작업을 처리 할 책임이 있으며 구문은 다음과 같습니다.
log4j.rootlogger = [level], 부록, 부록 이름 2,…
레벨 : 로깅의 우선 순위는 꺼짐, 치명적, 오류, 경고, 정보, 디버그, 정의 된 수준으로 나뉩니다.
부록 : 지정된 로그 정보 출력 대상의 이름입니다.
예를 들면 : log4j.rootlogger = info, a1, b2, c3
초기 LOG4J 버전에서 org.apache.category는 로거의 기능을 구현 한 다음 로거를 사용하여 카테고리 클래스를 확장하여 log4j.RootCategory도 사용할 수 있습니다.
예를 들어 : log4j.rootcategory = info, a1, a2
2. 로그 정보 출력에 대한 대상 appender를 구성하십시오
Appender는 로깅 작업의 출력을 제어 할 책임이 있으며 구문은 다음과 같습니다.
log4j.appender.appendername = full.qualified.name.of.appender.class
그중 "Full.qualified.name.of.appender.class"는 다음과 같은 유형이 있습니다.
i.org.apache.log4j.consoleAppender (콘솔)
몇 가지 옵션이 있습니다.
임계 값 = WARN : 로그 메시지의 가장 낮은 수준의 출력을 지정합니다.
즉시 플러시 = true : 기본값은 true이므로 모든 메시지가 즉시 출력됩니다.
Target = System.err : 기본적으로 : System.out, 출력 콘솔을 지정합니다.
ii.org.apache.log4j.fileAppender (파일)
몇 가지 옵션이 있습니다.
임계 값 = WARN : 로그 메시지의 가장 낮은 수준의 출력을 지정합니다.
즉시 플러시 = true : 기본값은 true이므로 모든 메시지가 즉시 출력됩니다.
file = mylog.txt : 메시지가 mylog.txt 파일에 출력을 지정합니다.
append = false : 기본값은 true입니다. 이는 지정된 파일에 메시지를 추가하는 것을 의미합니다.
iii.org.apache.log4j.dailyrollingfileAppender (매일 하나의 로그 파일 생성)
몇 가지 옵션이 있습니다.
임계 값 = WARN : 로그 메시지의 가장 낮은 수준의 출력을 지정합니다.
즉시 플러시 = true : 기본값은 true이므로 모든 메시지가 즉시 출력됩니다.
file = a.log : 메시지가 기본적으로 웹 서버의 루트 경로에서 시작되는 A.Log 파일에 대한 출력을 지정합니다.
append = false : 기본값은 true입니다. 이는 지정된 파일에 메시지를 추가하는 것을 의미합니다.
DatePattern = '.'YYYY-WW : 일주일에 한 번 파일을 스크롤하십시오. 물론 매월, 주, 주, 주, 시간 및 분을 지정할 수도 있습니다. 즉, 해당 형식은 다음과 같습니다.
'.'yyyy-mm : 매월
'.'yyyy-ww : 매주
'.'yyyy-mm-dd : 매일
'.'yyyy-mm-dd-a : 하루에 두 번
'.'yyyy-mm-dd-hh : 시간별
'.'yyyy-mm-dd-hh-mm : 분당
iv.org.apache.log4j.rollingFileAppender (파일 크기가 지정된 크기에 도달 할 때 새 파일이 생성됩니다. log4j.appender.appenderName.maxFilesize = 100KB로 파일 크기를 설정할 수 있습니다.
몇 가지 옵션이 있습니다.
임계 값 = WARN : 로그 메시지의 가장 낮은 수준의 출력을 지정합니다.
즉시 플러시 = true : 기본값은 true이므로 모든 메시지가 즉시 출력됩니다.
file = a.log : 메시지가 기본적으로 웹 서버의 루트 경로에서 시작되는 A.Log 파일에 대한 출력을 지정합니다.
append = false : 기본값은 true입니다. 이는 지정된 파일에 메시지를 추가하는 것을 의미합니다.
MaxFilesize = 100KB : 접미사는 KB, MB 또는 GB 일 수 있습니다. 로그 파일 이이 크기에 도달하면 자동으로 스크롤됩니다.
MaxbackupIndex = 2 : 생성 할 수있는 최대 스크롤 파일 수를 지정합니다.
v.org.apache.log4j.writerAppender (지정된 모든 장소로 스트림 형식으로 로그 정보 보내기)
예를 들어:
log4j.appender.r = org.apache.log4j.dailyrollingfileAppender
log4j.appender.r.file = d : //eclipsspace//testssh//webcontent//webcontent//web-inf//testlog.log
3. 로그 정보의 형식 (레이아웃)을 구성합니다
레이아웃은 Appender의 출력을 형식화하는 데 책임이 있으며 구문은 다음과 같습니다.
log4j.appender.appendername.layout = full.qualified.name.of.layout.class
그중 "Full.qualified.name.of.layout.class"는 다음과 같은 유형이 있습니다.
i.org.apache.log4j.htmllayout (HTML 테이블 양식의 레이아웃)
몇 가지 옵션이 있습니다.
LocationInfo = true : 기본값은 False이고 Java 파일 이름과 줄 번호를 출력합니다.
title = 내 앱 파일 : 기본값은 log4j 로그 메시지입니다.
ii.org.apache.log4j.patternlayout (레이아웃 모드를 유연하게 지정할 수 있음)
몇 가지 옵션이 있습니다.
converionPattern =%m%n : 지정된 메시지를 지정하는 방법을 지정합니다.
-X 번호 : X 정보가 출력 될 때 좌측 정렬;
%P : 출력 로그 정보 우선 순위, 즉 디버그, 정보, 경고, 오류, 치명적, 치명적,
%D : 로그 시점의 날짜 또는 시간은 출력입니다. 기본 형식은 다음과 같은 형식을 지정할 수 있습니다. 유사 : 2002 년 10 월 18 일, 921 일 22:10:28
%R : 응용 프로그램 시작 에서이 로그 정보의 출력으로 출력 할 밀리 초 수
%C : 출력 로그 정보가 속한 범주는 일반적으로 클래스의 전체 이름입니다.
%t : 로그 이벤트를 생성하는 스레드 이름을 출력
%L : 출력 로그 이벤트는 범주 이름, 발생 스레드 및 코드의 라인 수를 포함하여%C.%M (%F :%L)의 위치에서 발생합니다. 예 : TestLog4.Main (TestLog4.java:10)
%X : 현재 스레드와 관련된 NDC (NESHED 진단 환경)의 출력, 특히 멀티 커스토머 및 멀티 스레딩이있는 Java 서블릿과 같은 응용 프로그램에서.
%% : "%"문자를 출력하십시오
%F : 출력 로그 메시지가 생성 된 파일 이름
%L : 출력 코드의 줄 번호
%M : 출력 코드에 지정된 메시지 및 생성 된 특정 로그 정보
% n : 출력 캐리지 리턴 라인 브레이크, Windows 플랫폼은 "/r/n"이고, UNIX 플랫폼은 "/n"이며 출력 로그 정보 라인 브레이크를 %와 모드 문자 사이에 추가하여 최소 너비와 최대 너비를 제어 할 수 있습니다. 너비 및 텍스트 정렬. 좋다:
%20C : 출력 범주의 이름을 지정하고 최소 너비는 20입니다. 범주의 이름이 20 미만인 경우 기본적으로 오른쪽으로 정렬됩니다.
%-20C : 출력 범주의 이름은 20입니다. 범주의 이름이 20 미만인 경우 "-"부호는 왼쪽 정렬을 지정합니다.
비 공간이 아닙니다.
%20.30c : 카테고리 이름이 20 미만인 경우 공간을 채우고 이름이 30 자 미만인 경우 왼쪽에서 차단 된 문자를 잘라냅니다.
예 : %-4r %-5p %d {yyyy-mm-dd hh : mm : sss} %c %m %n
[테스트]%p [%t]%C.%m (%l) |
iii.org.apache.log4j.simplelayout (로그 정보의 레벨 및 정보 문자열 포함)
iv.org.apache.log4j.ttcclayout (로그 생성의 시간, 스레드, 카테고리 등 포함)
4. 다른
log4j.logger.com
com.neusoft 패키지의 모든 클래스가 디버그되어 있는지 지정하십시오.
log4j.logger.com.opensymphony.oscache = 오류
log4j.logger.net.sf.navigator = 오류
이 두 문장은이 두 패키지에서 발생하는 오류 수준을 EHCACHE를 구성하지 않으면이 두 문장이 필요하지 않습니다.
log4j.logger.org.apache.commons = 오류
log4j.logger.org.apache.struts = 경고
이 두 문장은 스트럿의 패키지입니다.
log4j.logger.org.displaytag = 오류입니다
이 문장은 DisplayTag 패키지입니다. (QC 질문 목록 페이지에서 사용)
log4j.logger.org.springframework = 디버그
이 문장은 스프링 패키지입니다.
log4j.logger.org.hibernate.ps.preparedStatementCache = WARN
log4j.logger.org.hibernate = 디버그
이 두 문장은 최대 절전 모드의 패키지입니다.
3. 여러 파일에 로그를 쓰십시오.
LOG4J 구성 :
log4j.rootcategory = info, stdout
log4j.appender.stdout = org.apache.log4j.consoleappender
log4j.appender.stdout.layout = org.apache.log4j.patternlayout
log4j.appender.stdout.layout.conversionpattern =%d {yyyy-mm-dd hh/: mm/: ss, ss} [colorclouds]%p [%t]%C.%m (%l) | N
log4j.logger.net.sf.navigator = info
log4j.logger.org.springframework = info
log4j.logger.runlogger = info, r
log4j.appender.r = org.apache.log4j.rollingfileAppender
log4j.appender.r.file = g : //log//runlog.log
log4j.appender.r.maxfilesize = 51200kb
#log4j.appender.r.file = $ {com.huawei.icity.webapp.root} /log/icity.log
log4j.appender.r.layout = org.apache.log4j.patternlayout
log4j.appender.r.layout.conversionpattern =%d {yyyy-mm-dd hh/: mm/: ss, ss} [Colorclouds run]%p [%t]%C.%m (%l) %N
#log4j.logger.businessLogger = Info, b
#log4j.appender.b = org.apache.log4j.rollingfileAppender
#log4j.appender.b.file = g : //log//businesslog.log
#log4j.appender.b.maxfilesize = 51200kb
#log4j.appender.b.layout = org.apache.log4j.patternlayout
#log4j.appender.b.layout.conversionpattern =%d {yyyy-mm-dd hh/: mm/: ss, ss} [Colorclouds Business]%p [%t]%C.%m (%l) | m%n
log4j.logger.interfacelogger = info, i
log4j.appender.i = org.apache.log4j.rollingfileAppender
log4j.appender.i.file = g : //log//interfacelog.log
log4j.appender.i.maxfilesize = 51200kb
log4j.appender.i.layout = org.apache.log4j.patternlayout
log4j.appender.i.layout.conversionpattern =%d {yyyy-mm-dd hh/: mm/: ss, ss} [colorclouds interface]%p [%t]%C.%m (%l) | %N
Java Call :
org.apache.commons.logging.log; org.apache.commons.logfactory; getLog ( "runlogger"); // run log private static log interfacelog = logfactory.getLog ( "interfacelogger"); // 인터페이스 로그 공개 문자열 execute ()가 Ion {interfacelog.info ( "==== >> 요청 "); runlog.info ("request 02 "); return super.execute ();}}
다음은 웹 프로젝트에서 Log4J를 구성하는 방법입니다.
1. 레코드 수준과 정책을 동적으로 변경하면 "효과적인 엔터프라이즈 Java"에 명시된대로 웹 응용 프로그램을 다시 시작할 필요가 없습니다.
2. 로그 파일을/web-inf/logs로 설정/절대 경로를 쓰지 않고 설정하십시오.
3. Class-Path 대신 / web-inf /와 함께 log4j.properties 및 기타 속성을 배치 할 수 있습니다.
web.xml을 추가하십시오
<!-WebApprootKey 매개 변수가 정의되지 않으면 WebApprootKey는 기본 "WebApp.Root"입니다.
<CENTEXT-PARAM> <Param-Name> WebApprootKey </param-name> <Param-value> xxx.root </param-value> </context-param> <context-param> <param-name> log 4jconfiglocation < /param-name> <param- value> web-inf/log4j.properties </param-value> </context-param> <context-param> <param-name> log4jrefreshinterval </param-name> <param-value > 60000 </param-value> </context-param> <Leater> <Leater-class> org.springframework.web.util.log4jconfiglistener </laiseer class> </laiseer>
위 구성에서 Log4JConfigListener는 Web-Inf/Log4J.Propeties에서 구성 파일을 읽습니다.
60 초마다 구성 파일을 스캔하려면 Watchdog 스레드를 열십시오.
웹 디렉토리의 경로를 WebApp.Root라는 시스템 변수로 누릅니다.
그런 다음 로그 파일 위치는 log4J.properties에서 정의 할 수 있습니다
log4j.appender.logfile.file = $ {webapp.root} /web-inf/logs/myfuse.log
웹 애플리케이션이 여러 개 있고 WebApp.Root 변수가 반복 될 것을 두려워하면 Context-Param에서 WebApprootKey를 정의 할 수 있습니다.
위는 Java Web Log4J 구성을 분석하고 웹 프로젝트에서 Log4J를 구성하는이 기사의 기술입니다.