1 : LOG4J 소개 소개
Log4J는 Apache의 오픈 소스 프로젝트입니다. Log4J를 사용하여 콘솔, 파일, GUI 구성 요소, NT 이벤트 로거, UNIX Syslog Daemons 등을 제어 할 수 있습니다 각 로그의 출력 형식; 각 로그 정보의 레벨을 정의하면 로그 생성 프로세스를보다 신중하게 제어 할 수 있습니다. 가장 흥미로운 점은 응용 프로그램의 코드를 수정하지 않고 구성 파일을 통해 유연하게 구성 할 수 있다는 것입니다.
또한 Log4J 다른 언어 인터페이스를 통해 C, C ++, .NET, PL/SQL 프로그램에서 Log4J를 사용할 수 있으므로 다국어 분산 시스템은 통합되고 일관된 로그를 얻을 수 있습니다. 구성 요소. 또한 다양한 타사 확장을 사용하면 Log4J를 J2EE, Jini 및 SNMP 응용 프로그램에 쉽게 통합 할 수 있습니다.
2. 초보자 예
1. 새 Java 프로젝트를 만들고 패키지 로그 4J-1.2.17.jar를 가져 오면 전체 프로젝트의 최종 디렉토리는 다음과 같습니다.
2. 동일한 수준에서 log4J.properties를 생성하고 설정하십시오
### 설정###
log4j.rootlogger = Debug, Stdout, D, e
### LIFT를 제어하기위한 출력 정보 ####
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 = [%-5p]%d {yyyy-mm-dd hh : mm : ss, sss} 방법 :%l%n%m%n
### 디버그 레벨 위의 출력 로그는 = e : //logs/error.log ###
log4j.appender.d = org.apache.log4j.dailyrollingfileappender
log4j.appender.d.file = e : //logs/log.log
log4j.appender.d.append = true
log4j.appender.d.threshold = 디버그
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
### 출력 오류 레벨 위의 출력 로그는 = e : //logs/error.log ###
log4j.appender.e = org.apache.log4j.dailyrollingfileAppender
log4j.appender.e.file = e : //logs/error.log
log4j.appender.e.append = true
log4j.appender.e.threshold = 오류
log4j.appender.e.layout = org.apache.log4j.patternlayout
log4j.appender.e.layout.conversionpattern = %-d {yyyy-mm-dd hh : mm : ss} [ %t : %r]-[ %p] %m %n
3. 로그 내용을 설정하십시오
패키지 com.mucfc; import org.apache.log4j.logger;/** *@Author Linbingwen *@2015 년 5 월 18 일 9:14:21 */public class test {private static logger logg er = logger.getLogger (테스트. 클래스); / ** @param args * / public static void main (// system.out.println). : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : "이것은 디버그 메시지입니다."; 정보 메시지. "); // 레코드 오류 레벨 정보 logger.error ("이것은 오류 메시지입니다. ");}}.4. 출력 결과
(1) 우선, 콘솔 정보
(2) 출력 파일을 살펴 보겠습니다
내용은 다음과 같습니다. 필요에 따라 해당 문서에 출력 된 것으로 밝혀졌습니다.
3. LOG4J의 기본 사용 방법
Log4J는 로그 정보의 우선 순위, 로그 정보의 출력 대상 및 로그 정보의 출력 형식의 세 가지 중요한 구성 요소로 구성됩니다. 로그 정보의 우선 순위는 로그 정보의 중요성을 지정하는 데 사용되는 오류, 경고, 정보 및 디버그입니다. 파일 및 출력은 형식이 로그 정보의 표시 내용을 제어합니다.
2.1. 구성 파일 정의
실제로 구성 파일을 전혀 사용할 수는 없지만 코드에서 LOG4J 환경을 구성 할 수도 있습니다. 그러나 구성 파일을 사용하면 애플리케이션이 더욱 유연 해집니다. Log4J는 두 개의 구성 파일 형식을 지원합니다. 하나는 XML 형식 파일이고 다른 하나는 Java 기능 파일 (key = value)입니다. 아래에서 Java 기능 파일을 구성 파일로 사용하는 방법을 소개합니다.
1. 루트 로거를 구성하면 구문은 다음과 같습니다.
log4j.rootlogger = [level], 부록, 부록 이름,…
그중에서도 레벨은 로깅의 우선 순위, 꺼짐, 치명적, 오류, 경고, 정보, 디버그, 정의하는 수준으로 나뉩니다. Log4J는 4 레벨 만 사용하는 것이 좋습니다. 오류, 경고, 정보 및 디버그는 높음에서 낮은 곳에서 우선 순위로 우선 순위가 있습니다. 여기에 정의 된 레벨에 따라 응용 프로그램의 해당 로그 정보 수준으로 스위치를 제어 할 수 있습니다. 예를 들어, 정보 수준이 여기에 정의되면 응용 프로그램의 모든 디버그 레벨 로그 정보는 인쇄되지 않습니다. 부록 이름은 B 로그 정보가 출력되는 위치를 나타냅니다. 여러 출력 대상을 동시에 지정할 수 있습니다.
2. 로그 정보를 출력하도록 대상 appender를 구성하십시오. 구문은 다음과 같습니다.
log4j.appender.appendername = full.qualified.name.of.appender.class
log4j.appender.appendername.option1 = value1
…
log4j.appender.appendername.option = valuen
그 중에서도 Log4J가 제공 한 부록은 다음과 같습니다.
org.apache.log4j.consoleappender (콘솔),
org.apache.log4j.fileAppender (파일),
org.apache.log4j.dailyrollingfileAppender (매일 하나의 로그 파일 생성),
org.apache.log4j.rollingfileAppender (파일 크기가 지정된 크기에 도달하면 새 파일이 생성됨),
org.apache.log4j.writerappender (지정된 장소로 스트림 형식으로 로그 정보 보내기)
3. 로그 정보의 형식 (레이아웃)을 구성하며 구문은 다음과 같습니다.
log4j.appender.appendername.layout = full.qualified.name.of.layout.class
log4j.appender.appendername.layout.option1 = value1
…
log4j.appender.appendername.layout.option = valuen
그중에는 Log4J에서 제공하는 몇 가지 레이아웃이 있습니다.
org.apache.log4j.htmllayout (HTML 테이블 양식의 레이아웃),
org.apache.log4j.patternlayout (레이아웃 모드를 유연하게 지정할 수 있음),
org.apache.log4j.simplelayout (로그 정보의 레벨 및 정보 문자열 포함),
org.apache.log4j.ttcclayout (로그 생성의 시간, 스레드, 카테고리 등 포함)
log4j는 C 언어의 printf 함수와 유사한 인쇄 형식을 사용하여 로그 정보를 형식화하며 인쇄 매개 변수는 다음과 같습니다. %m 출력 코드에 지정된 메시지
%P 출력 우선 순위, 즉 디버그, 정보, 경고, 오류, 치명적
%r 출력 응용 프로그램 시작에서 찍은 밀리 초 수를 로그 정보를 출력합니다.
%C는 범주를 출력합니다. 일반적으로 위치에있는 클래스의 전체 이름입니다.
%t 로그 이벤트를 생성하는 스레드 이름을 출력합니다.
%n 출력 캐리지 리턴 라인 브레이크, Windows 플랫폼은 "RN", UNIX 플랫폼은 "N"입니다.
%d 로그 시점의 날짜 또는 시간은 다음과 같은 형식을 지정할 수 있습니다. : 2002 년 10 월 18 일 22:10:28, 921
%l 클래스 이름, 발생한 스레드 및 코드의 줄 수를 포함하여 로그 이벤트가 발생하는 위치를 출력합니다. 예 : TestLog4.Main (TestLog4.java:10)
2.2. 코드에서 log4를 사용하십시오
1. 레코더를 얻으십시오
Log4J를 사용하여 첫 번째 단계는 로그 정보를 제어하는 로그 레코더를 얻는 것입니다. 구문은 다음과 같습니다.
공개 정적 로거 getLogger (문자열 이름)
지정된 이름으로 로거를 가져 와서 필요한 경우 이름에 대한 새 로거를 만듭니다. 이름은 일반적 으로이 클래스에서 다음과 같이 명명됩니다.
static logger logger = logger.getLogger (ServerWithLog4j.class.getName ())
2. 구성 파일을 읽으십시오
로거를 얻은 후, 두 번째 단계는 구문과 함께 log4J 환경을 구성합니다.
BASICCONFIGURATOR.CONFIGURE () : 기본 LOG4J 환경을 자동으로 빠르게 사용합니다.
PropertyConfigUrator.configure (String ConfigFileName) : Java의 기능 파일을 사용하여 작성된 구성 파일을 읽습니다.
domconfigurator.configure (String filename) : XML 양식으로 구성 파일을 읽으십시오.
3. 레코드 정보 삽입 (형식 로그 정보)
이전 두 단계가 완료되면 구문이 다음과 같습니다.
logger.debug (객체 메시지);
logger.info (객체 메시지);
logger.warn (객체 메시지);
logger.error (객체 메시지);
2.3. 로그 레벨
각 로거는 로그 정보의 출력을 제어하기 위해 로그 레벨 (로그 레벨)이 적용됩니다. 로그 레벨은 다음으로 나뉩니다.
A : 최고 수준은 모든 로깅을 닫는 데 사용됩니다.
B : 치명적은 각 임계 오류 이벤트가 신청서가 종료 될 것임을 나타냅니다.
C : 오류는 오류 이벤트가 발생하지만 여전히 시스템의 지속적인 작동에 영향을 미치지 않음을 나타냅니다.
D : Warm은 잠재적 인 오류 상황이 있음을 나타냅니다.
E : 정보는 일반적으로 거친 입자 수준에서 응용 프로그램의 전체 작동을 강조합니다.
F : 디버그는 일반적으로 세밀한 수준에서 사용되며 디버깅 애플리케이션에 매우 도움이됩니다.
G : 모든 최소 레벨, 모든 로깅을 열는 데 사용됩니다.
위의 레벨은 org.apache.log4j.level 클래스에 정의되어 있습니다. Log4J는 4 레벨을 사용하는 것이 좋습니다. 높음에서 낮은 오류, 오류, 경고, 정보 및 디버그로 우선 순위가 있습니다. 로그 레벨을 사용하면 응용 프로그램의 해당 레벨에서 로그 정보의 출력을 제어 할 수 있습니다. 예를 들어 B를 사용하는 경우 응용 프로그램의 정보 수준 (예 : 디버그) 아래의 모든 로그 정보는 인쇄되지 않습니다.
4. 웹 프로젝트에서 Log4J 인스턴스를 사용하십시오
위의 코드는 Log4J의 간단한 응용을 설명하며 실제로 Log4J를 사용하는 것은 매우 간단하고 편리합니다. 물론 위의 구성 방법 외에도 J2EE 애플리케이션에서 j2ee 응용 프로그램을 만드는 것과 같은 다른 것들이 있습니다. web.xml에서.
1. 웹 애플리케이션의 Log4J 사용법은 기본적으로 다음을 사용합니다. init 함수에서 log4J에 대한 구성을 실행하는 새 서블릿을 만듭니다. 일반적으로 구성 파일을 읽는 것입니다. 따라서이 서블릿을 web.xml에서 구성하고로드를 시작하여 1로 설정해야합니다.
2.이 서블릿 구성 log4J는 구성 파일을 읽은 다음 구성을 호출하는 것입니다. 여기에는 두 가지 질문이 있습니다. 1. 파일의 위치를 알아야합니다
3. 구성 파일 위치는 Web.xml에서 구성 할 수 있습니다.
4. 파일 유형에는 일반적으로 두 가지 유형이 있으며, 하나는 Java 속성 파일이고 다른 하나는 XML 파일입니다.
구성 파일의 일반적인 내용 : log4j는 출력 로그 레벨의 최소 레벨을 지정할 수 있으며 각 로그의 출력 구성 형식은 여러 출력 메소드를 지정할 수 있습니다.
(1) 웹 프로젝트 만들기, 전체 프로젝트의 최종 디렉토리는 다음과 같습니다.
(2) web.xml 구성은 다음과 같습니다.
<? xml version = "1.0"encoding = "utf-8"?> <web-app xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance"xmlns = "http : // java .sun.com/xml/ns/javaee "xsi : schemalocation ="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0 .xsd "id ="webapp_id "버전 ="3.0 "> <display-name> loglearning </display-name> <servlet> <servlet-name> log4jtestservlet </servlet-name> <servlet-cls> com.mucfc 로그 4JTESTSERVLET </servlet-class> </servlet> <!-로그 4JCONFIGLOCATION을 시작하는 데 사용되는 서블릿-> <SERVLET> <SERVLET-NAME> log4jinitservlet </servlet-name> <servlet-cla ss> com.mucfc.log4jinitservlet </servlet-class> <Init-Param> <Param-name> log4j-properties-location </param-name> <param-value> /web-inf/classes/log4j.properties </param-value> </ init -param> <load-on-startup> 1 </load-on-startup> </servlet> <servlet-mapping> <servlet-name> log4jtestservlet </servlet-name> <Url-pattern>/test </ url -pattern> </servlet-mapping> </web-app>
(3) 구성 파일 log4j.properties
### 로그 레벨 설정 ###
log4j.rootlogger = Debug, Stdout, 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 = [%-5p]%d {yyyy-mm-dd hh : mm : ss, sss} 방법 :%l%n%m%n
log4j.appender.d = org.apache.log4j.dailyrollingfileappender
log4j.appender.d.file = f : //logs/log.log
log4j.appender.d.append = true
log4j.appender.d.threshold = 디버그
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.e = org.apache.log4j.dailyrollingfileAppender
log4j.appender.e.file = f : //logs/error.log
log4j.appender.e.append = true
log4j.appender.e.threshold = 오류
log4j.appender.e.layout = org.apache.log4j.patternlayout
log4j.appender.e.layout.conversionpattern = %-d {yyyy-mm-dd hh : mm : ss} [ %t : %r]-[ %p] %m %n
(4) 웹 컨테이너가 오자마자 초기화 된 서블릿
log4jinitserd.java.io.ioexcept; javax.httpservlet. * Servlet 구현 클래스 Log4JinitserVlet */ @webservlet ( "/ log4jinitservlet") public class log4jinitservlet는 httpservlet {private static final long s eraalversionuid = 1l; ); // TODO 자동 생성 된 생성자 스텁} / ** * @SEERBLET#init (servletConfig) * / public void init (ServletConfig Config) servletexception {systeme m.out.println ( "log4jinitservlet는 log4J 로그 설정을 초기화합니다. "); String log4jlocation = config.getInitParameter ("log4j-properties-location "); servletContext sc = config.getServletContext (); if (log4jloction == nul l) {System.err.println ("*** no log4j- Properties-Location 초기화 파일이므로 BasicConfigUrator를 사용하여 "); BasicConfigUrator.configure ();} else {String webAppPath = sc.getRealPath ("/"); String log4jprop = webAppPath + l oog4jlocation; file yomamayesthissaysyomama = 새 파일 (log4jprop ); ** " + log4jprop +"파일은 찾을 수 없었으며, 기본 ConfigUrator "); BasicConfigUrator.configure ();}} super.init (config);} /*** @see httpservlet#doget (httpservletrequest request est, @see httpservlet# httpservletresponse response) */ protected void doget (httpservletrequest 요청, httpservletresponse 응답) servletexception, ioexception {// todo auto-regenated method stub}/ ** *@see httpervle t#dopost (httpervletrequest 요청) dopost (httpservletrequest 요청, httpservletreponse 응답) servletexception 던지기, ioexception {// todo 자동 생성 메소드 스터브}}}로그 로그 4JtestServlet, Java를 호출하십시오
com.mucfc; http .httpservletrequest; SerialversionUid = 1L; * * * * @see servlet#init (servletconfig) */ public void init (servletconfig config) servletexception {// todo 자동 생성 메소드 스터브}/ ** @ @ httpservlet#doget (httpservletrequest request, httpservletronsponse 응답) */ 보호 된 void doget (httpservletrequest request, httpservletresponse 응답)은 servletexception {// 레코드 디버그 레벨 정보 logger.debug를 던졌습니다 메시지. "); // 레코드 오류 레벨 정보 logger.error ("이것은 오류 메시지입니다. ");} / ** * @see httpservlet#dopost (httpservletrequest request, httpservletResponse 응답) * / protected void dopost (httpservletrequest request, httpservletresponse 응답) servletexception, ioexception {doget (request, response)};다음은 실행 중입니다. 결과를 보자.
출력 결과 :
5. 스프링에서 log4J를 사용하십시오
여기서 우리는 Log4J를 사용하기 위해 웹 프로젝트에서 스프링 사용을 구현해야합니다.
(1) 위 프로젝트에 연결 한 다음 스프링 패키지를 가져옵니다.
(2) web.xml이 추가되었습니다
<!-루트 디렉토리 세트-> <countxt-param> <param-name> webApprootKey </param-name> <Param-value> webApp.Root </param- value> </context-param> <context- param> <param-name> log4jconfiglocation </param-name> <param-value> /web-inf/classes/log4j.properties </param-value> </context-param> <!-3000은 하나의 오프닝 워치 독을 의미합니다. 스레드는 60 초마다 구성 파일을 스캔합니다. 이는 로그 저장 위치 변경을 용이하게합니다. > </context-param> <layer> <layer-class> org.springframework.web.util.log4jconfiglistener </hareser-class> </largeer>
전체 내용은 다음과 같습니다.
<? xml version = "1.0"encoding = "utf-8"?> <web-app xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance"xmlns = "http : // java .sun.com/xml/ns/javaee "xsi : schemalocation ="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0 .xsd "id ="webapp_id "버전 ="3.0 "> <display-name> loglearning </display-name> <servlet> <servlet-name> log4jtestservlet </servlet-name> <servlet-cls> com.mucfc log4jtestservlet </servlet-class> </servlet> <!-Servlet는 log4jconfiglocation-> <!-<servlet> <servlet-name> log4jinitservlet </servlet-name> <servlet -class> com을 시작하는 데 사용됩니다. mucfc.log4jinitservlet </servlet-class> <init-param> <param-name> log4j-properties-location </param-name> <param-value>/web-inf/classes/log4j.p roperties </param- value> </init-param> <load-on-startup> 1 </load-on-startup> </servlet>-> <servlet-mapping> <servlet-name> log4jtestservlet </servlet-name> <url -패턴>/테스트 </url-pattern> </servlet-mapping> <!-스프링 컨테이너 로딩-> <Leater> <Leater-class> org.springframework.web.context.contextloaderListener </enerclass 목록 > </laiseer> <coundxt-param> <param-name> contextConfigLocation </param-name> <Param-value> classPath : ApplicationContext.xml </param- value> </context-par am> <!-세트 루트 디렉토리-> <countxt-param> <param-name> webApprootKey </param-name> <Param-value> webApp.Root </param- value> </context-param> <context-param> <param- 이름> log4jconfiglocation </param-name> <param-value> /web-inf/classes/log4j.properties </param-value> </context-param> <!-3000은 구성을 스캔하기 위해 Watchdog 스레드를 여는 것을 의미합니다. 60 초마다 파일이 변경됩니다. 이는 로그 스토리지 위치의 변경을 용이하게합니다 .-> <centlext-param> <param-name> log4jrefreshinterval </param-name> <param- value> 3000 </param-value> </context- param> <layer> <layer-class> org.springframework.web.util.log4jconfiglistener </laiseer-class> </lartiser> </web-app>
여기서 log4jinitservlet.java는 쓸모없는 것과 같습니다.
(2) ApplicationContext.xml
콘텐츠 없음 :
<? xml 버전 = "1.0"encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://www.w3.org /2001/xmlschema-instance "xmlns : context ="http://www.springframework.org/schema/context "xmlns : aop ="http://www.springframework.org/sche ma/aop "xsi : schemalocation = "http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/aophttp : // www . SpringFramework.org/schema/aop/spring-aop-3.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/cont ext/Spring-context-3.2.xsd "> </beans>
(3) 이런 식으로 로그는 스프링 창으로 시작됩니다.
프로그램이 실행되면 로그가 자동으로 인쇄됩니다.
log.log
error.log는 오류 수준 이상의 정보 만 인쇄하기 때문에 비어 있습니다.
브라우저에서 http : // localhost : 8080/loglearning2/test를 입력하십시오
그런 다음 파일을 엽니 다
Java Log4J에 대한 자세한 튜토리얼은 다음과 같은 기사를 소개합니다.