백그라운드 프로그램이 개발 및 시작되면 로그 정보 인쇄 및 로그 로그 녹음이 일반적으로 사용됩니다. 개발 중에 로그 정보 인쇄는 문제를 빠르게 찾아 빠르게 개발할 수 있도록 도와줍니다. 프로그램이 온라인 상태 인 후에 버그 또는 오류가 발생하면 문제를 찾기 위해 로그 레코드가 필요합니다.
Spring Boot는 가장 일반적으로 사용되는 Apache Log4J 중 많은 다른 로깅 시스템을 통합 할 수 있으며 Log4J 2는 Log4J의 업그레이드 된 버전으로 Log4J 1.X에 비해 많은 크게 개선되었습니다. 따라서이 블로그는 Spring Boot가 Log4J2를 통합하고 구성하는 방법에 대해 직접 이야기합니다.
1. LOG4J2 패키지 가져 오기
Gradle을 사용하는 경우 Build.gradle 파일에 다음 종속성을 추가하십시오. Gradle 메소드는 샘플 코드에 사용됩니다.
종속성 {// log4j2 compile "org.apache.logging.log4j : log4j-api : 2.8"compile "org.apache.logging.log4j : log4j-core : 2.8"// logger 'com.lmax : 3.6'}에서 Async compile을 지원하는 데 사용됩니다.Maven을 사용하는 경우 pom.xml 파일에 다음 종속성을 추가하십시오.
<pectionies> <pectionency> <groupId> org.apache.logging.log4j </groupId> <artifactid> log4j-api </artifactid> <bersion> 2.8 </dependency> <pectionency> <groupid> org.apache.logging.log4j </groupid> <artifactid> log4j-cocore </artifactid> <버전> 2.8 </version> </fectionency> <pectomency> <groupId> com.lmax </groupId> <artifactID> inruptor </artifactid> <bersion> 3.3.6 </version> </fectionency> </fectionements>
2. Log4J2 구성 파일을 추가하십시오
프로젝트 리소스 리소스 파일의 루트 디렉토리에서 log4j2.xml 파일을 작성하고 다음 코드를 파일에 복사하십시오.
<? xml version = "1.0"encoding = "utf-8"?> <!-구성 후 상태는 log4j2 자체 내부에서 정보 출력을 설정하는 데 사용됩니다. 설정할 수 없습니다. 추적으로 설정되면 Log4J2 내부에 다양한 상세한 출력이 표시됩니다. Can be set to OFF (off) or Error (only output error information) --><Configurationstatus="OFF"> <!-- Log file directory and compressed file directory configuration --> <Properties> <Propertyname="fileName">/home/kylin/log/knight/spring_log</Property> <Propertyname="fileGz">/home/kylin/log/knight/spring_log/7z</Property> </properties> <bactenders> <!-출력 콘솔 로그에 대한 구성-> <consolename = "console"target = "system_out"> <!-콘솔 만 수준 이상 (onMatch) 및 기타 직접 거부 (onmistatch)-> <ThresholdFilterLevel = "info"-"onmismatch =" "on Mismatch =" "" "-" <PatternLayoutPattern = " %d {hh : mm : ss.sss} [ %t] %-5level %logger {36}- %msg %n"/> </console> <!- 모든 정보를 인쇄합니다. 크기가 크기를 초과 할 때 마다이 크기의 로그는 연말에 의해 생성 된 폴더에 자동으로 저장되고 아카이브-> <RollingRandomaccessFilename = "infofile"filename = "$ {filename} /web-info.log"ormeriateflush = "false"로 압축됩니다. FilePattern = "$ {filegz}/$$ {날짜 : yyyy-mm}/app- %d {mm-dd-yyyy}- %i.web-info.gz"> <patternlayoutpattern = " %d {yyy-mm-dd 'at'hh : mm : ss z} [ %t] %t] %t] %msg%xex%n "/> <policies> <timebasedtriggeringpolicyinterval ="6 "modulate ="true "/> <sizebasedtriggeringpolicysize ="50 mb "/> </policies> <filters> <!-기록 전용 정보 및 경고 수준 정보-> <thresholdfilterlevel ="ormatch = "onmismatch ="onmismatch = "onmismatch ="onmismatch " <thresholdFilterLevel = "info"onmatch = "accept"onmistatch = "deny"/> </filters> <!-기본 패킷 7, 기본 패킷 수를 지정하고, 이전의 패킷을 초과하는 경우, defaultrolloverStrategyMax = "50"/> </rollingrandomcsfile>-<!-<! <RollingRandomAccessFilename = "ErrorFile"Filename = "$ {filename}/Web-error.log"impliateFlush = "false"filepattern = "$ {filegz}/$$ {날짜 : yyyy-mm}/app-%d {mm-dd-yyyy}-%ie.wb-error.gz" <patternlayoutpattern = " %d {yyyyy-mm-dd 'at'hh : mm : ss z} [ %t] %-5level %logger {36} %l %m- %msg %xex %n"/> <policies> <timebasegriggeingpolicyinterval = "6" "modulate ="true "/> MB "/> </policies> <filters> <!-레코드 오류 레벨 정보 만 기록-> <thresholdFilterlevel ="error "onmatch ="encce "onmistatch ="deny "/> </filters> <!-기본적으로 전기를 지정하면 하루 종일 압축 패키지의 최대 수를 지정합니다. </rollingrandomaccessfile> </appenders> <!-하루에 압축 된 최대 수의 패킷 수를 지정하고, 기본 패킷은 7이며, 이전 패킷은 7이며, 이전 패킷은 쓸데게됩니다-> <defaultrolloverStrategymax = "50"/> </rollingrandomaccessfile> <!-글로벌 configuration에 의한 전역 구성. <loggers> <! - Asyncroot -Asynchronous Logging- lmax druptor의 지원이 필요합니다 -> <asyncrootlevel = "infoy"acditivity = "false"> <appenderrefref = "console"/> <appenderrefref = "infofile"/> <appenderrefref = "errorfile"</asyncroot> </asyncroot>3. Log4J2 보조 클래스를 쓰십시오
위의 구성을 한 후 보조 클래스를 작성하여 Log4J2를 사용하여 로그를 기록하는 것이 더 편리합니다.
Utils 패키지에서 l.java 클래스 파일을 만듭니다.
package com.spring.log4j2.utils; import org.apache.logging.log4j.logmanager; import org.apache.logging.log4j.logger;/*** 로깅 보조 클래스*** 2017/5/11에 Kylin에서 만든 Logger Logging 보조 클래스*. */public classl {private static final logger logger = logmanager.getLogger (); privatel () { / * 인스턴스화 할 수 없습니다 * / 새 지원되지 않은 새로운 정보를 던지십시오 ( "인스턴스화 할 수 없음"); } publicStaticLoggerGetLogger () {return logger; } publicstaticVoidt (String MSG) {logger.trace (msg); } publicStaticVoidd (String Msg) {logger.debug (msg); } publicStaticVoidi (String MSG) {logger.info (msg); } publicStaticVoidw (String Msg) {logger.warn (msg); } publicstaticVoide (String Msg) {logger.error (msg); }}보조 클래스를 작성한 후에는 사용하기가 매우 간단하며 다음 코드를 통해 쉽게 사용할 수 있습니다.
@ControllerPublic ClassWebController {@requestmapping ( "/") publictringIndex () {String Msg = "Spring Boot 시리즈에서 Log4J2의 구성 및 사용"; LT (MSG); LD (MSG); Li (MSG); LW (MSG); LE (MSG); "색인"을 반환합니다. }}여기에 보조 클래스는 몇 가지 기본 사용 방법을 작성하고 필요에 따라 사용자 정의하고 더 많은 보조 방법을 추가 할 수 있습니다. 도우미 클래스에 제공되지 않은 메소드의 경우 l.getLogger () 메소드를 사용하여 로거 인스턴스를 사용할 수도 있습니다.
4. 결과 검증
로그의 레벨 등급 : 트레이스 <디버그 <info <warn <error <치명적입니다.
내 log4j2의 레벨이 정보 수준으로 설정되어 있기 때문입니다. 따라서 인쇄 정보에서 세 가지 수준의 정보, 경고 및 오류 만 볼 수 있습니다 (치명적인 수준의 정보는 인쇄되지 않으며 그렇지 않으면 볼 수 있습니다).
인쇄 정보는 아래 그림에 나와 있습니다.
동시에 아래 그림과 같이 로그 파일이 컴퓨터 시스템에서 생성되었습니다.
경로를 관찰 함으로써이 경로는 로그4J2.xml에 설정된 경로임을 알 수 있습니다.
<!-로그 파일 디렉토리 및 압축 파일 디렉토리 구성-> <properties> <propertyname = "filename">/home/kylin/log/knight/spring_log/spring_log </property </propertyname = "filegz">/kylin/log/knight/spring_log/7z </properties>
5. 더
log4j2의 github 주소 : https://github.com/apache/logging-log4j2
이 자습서의 샘플 코드 주소 https://github.com/dkylin/springboot-sample/tree/master/springboot-log4j2
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.