Cuando se desarrolla y inicia el programa de fondo, generalmente se usa la impresión de información de registro y la grabación de registro. Durante el desarrollo, la impresión de información de registro puede localizar rápidamente el problema y ayudarnos a desarrollar rápidamente. Si se produce un error o error después de que el programa esté en línea, se necesitan registros de registros para encontrar el problema.
Spring Boot puede integrar muchos sistemas de registro diferentes, entre los cuales el Apache Log4J más utilizado y Log4J 2 es una versión actualizada de LOG4J, que ha realizado muchas mejoras significativas en comparación con Log4J 1.x. Entonces, este blog hablará directamente sobre cómo Spring Boot integra y configura LOG4J2.
1. Paquete de importación log4j2
Si está utilizando Gradle, agregue las siguientes dependencias en el archivo build.gradle. El método de Gradle se utiliza en el código de muestra.
dependencias {// log4j2 compilar "org.apache.logging.log4j: log4j-api: 2.8" compilar "org.apache.logging.log4j: log4j-core: 2.8" // Se utiliza para admitir async compilarse en logger 'com.lmax: desactivador: 3.3.6'}Si está utilizando Maven, agregue las siguientes dependencias en el archivo pom.xml.
<pendencies> <Spendency> <MoupRid> org.apache.logging.log4j </proupid> <artifactid> log4j-api </artifactid> <versión> 2.8 </version> </dependency> <pendency> <proupid> org.apache.logging.log4j </groupid> <artifactid> log4j-core </artes> <tartactid> </pendency> <pendency> <grupid> com.lmax </groupid> <artifactid> disruptor </artifactid> <versión> 3.3.6 </versión> </pendency> </dependencias>
2. Agregue el archivo de configuración LOG4J2
Cree el archivo log4j2.xml en el directorio raíz del archivo de recursos de recursos del proyecto y copie el siguiente código en el archivo.
<? xml versión = "1.0" coding = "utf-8"?> <!-El estado después de la configuración se usa para establecer la salida de información dentro de log4j2. No se puede configurar. Cuando esté configurado para rastrear, verá varias salidas detalladas dentro de log4j2. Se puede configurar en OFF (OFF) o Error (solo información de error de salida)-> <ConfigurationStatus = "Off"> <!-Log Directory de archivos y configuración de directorio de archivos comprimido-> <Propiedades> <Propertyname = "FileName">/Home/Kylin/ </Propiedades> <Appenders> <!-Configuración para registros de consolas de salida-> <consoleName = "console" target = "system_out"> <!-console solo sale información en nivel y arriba (onmatch) y otras rejudios directos (onMismatch)-> <ThresholdFilterLelvel = "INFO" Onmatch = "Onmismatch =" deny "/> <<!----Outsoleut-Output Outyeutatt---------------Formul <PatternLayoutPattern = " %d {HH: MM: SS.SSS} [ %t] %-5Level %Logger {36}- %msg %n"/> </console> <!- Imprima toda la información. Cada vez que el tamaño excede el tamaño, el registro de este tamaño se almacenará automáticamente en la carpeta creada por año mes y se comprimirá como un archivo-> <rollingrandomaccessfileName = "infofile" filename = "$ {filename} /web -info.log" inmediato} de inmediato = "falso" filePattern = "$ {fileGz}/$$ {fecha: aaa yyyy-mm}/app- %d {mm-dd-yyyy}- %i.web -info.gz"> <patruthLayoutpattern = " %d {yyyyyy-mm-dd 'a' hh: mm: ss z} [ %t] %-5level %loger {36} %msg%xex%n "/> <policies> <timeBasedRggeringPolicyInterval =" 6 "modulado =" true "/> <sizeBasedRiggeringPolicySize =" 50 mb "/> </policies> <filters> <!-Registre solo información y información de la advertencia-> <MhESHOLDFILTLEVELVE <ThrhesholdFilterLevel = "Info" onMatch = "Acept" onMismatch = "Deny"/> </filters> <!-Especifique el número máximo de paquetes comprimidos por día, predeterminado 7, si excede el anterior, lo que sobrescribirá-> <FaulTrolloverStrateGyMax = "50"/> </RollingRandomaccessfile> <! <RollingrandomAccessFileName = "ErrorFile" FileName = "$ {FileName} /web-error.log" inmediatoflush = "false" filePattern = "$ {fileGz}/$$ {date: yyyyy-mm}/app-%d {mm-dd-yyyy}-%i.web-berror.gz" " <PatternLayoutPattern = " %d {yyyyyy-mm-dd 'at' hh: mm: ss z} [ %t] %-5Level %logger {36} %l %m- %msg %xex %n"/> <Policies> <TimeBasedTriggeringPolicyinterval = "6" modulado = "verdadero"/> <sizeBasedTriggeringIngeringIngeringIsEnyIsEnizEnizEnizEnizEnizeSEnyize </policies> <filters> <!-Registre solo información de nivel de error-> <ThresholdFilterLevel = "Error" onMatch = "Acepting" onMismatch = "Deny"/> </ filtros> <!-Especifique el número máximo de paquetes comprimidos por día, predeterminado 7, si excede el anterior, será excesivo Overwrite-> <FefaultrolsoverStrateGyMax = "50"/"50"/"50"/"50" </RollinGrandomAccessFile> </appenders> <!-Especifique el número máximo de paquetes comprimidos por día, el valor predeterminado es 7 y el anterior se sobrescribirá-> <defaulTrolloverStrateGyMax = "50"/> </rollinDomAccessFile> </aPenders> < AsynCroot - Registro asíncrono - requiere soporte de LMAX disruptor -> <asyncrootlevel = "info" additivity = "false"> <appenderRefref = "console"/> <AppenderRefref = "infofile"/> <appenderRefref = "Errorfile"/> </asintencroot> </ loggers> </foFile "3. Escribir Log4J2 Clase auxiliar
Después de hacer la configuración anterior, podemos escribir una clase auxiliar para que sea más conveniente para nosotros usar log4j2 para grabar registros.
Cree un archivo de clase L.Java en el paquete Utils.
paquete com.spring.log4j2.utils; import org.apache.logging.log4j.logmanager; import org.apache.logging.log4j.logger;/*** Logger registro de la clase auxiliar** creado por Kylin en 2017/5/11. */public classl {private static final logger logger = logManager.getLogger (); Privatel () { / * no se puede instanciar * / lanzar una nueva Operación no compatible ("no se puede instanciar"); } 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); }}Después de escribir la clase auxiliar, es muy simple de usar y se puede usar fácilmente a través del siguiente código.
@ControllerPublic ClassWebController {@RequestMapping ("/") PublicsTringIndex () {String Msg = "Configuración y uso de LOG4J2 en la serie Spring Boot"; LT (MSG); Ld (msg); Li (msg); LW (MSG); Le (msg); devolver "índice"; }}La clase auxiliar aquí solo escribe algunos métodos de uso básicos, puede personalizarlos de acuerdo con sus necesidades y agregar más métodos auxiliares. Para los métodos no proporcionados en la clase Helper, también puede usar el método L.GetLogger () para que la instancia del registrador se use.
4. Verificación de resultados
Calificación de nivel de registros: traza <debug <info <warn <error <fatal.
Porque el nivel en mi log4j2 está configurado en el nivel de información. Por lo tanto, solo se pueden ver tres niveles de información, advertencia y error en la información de impresión (la información a nivel fatal no se imprime, de lo contrario se puede ver).
La información de impresión se muestra en la figura a continuación:
Al mismo tiempo, se generó un archivo de registro en el sistema informático, como se muestra en la figura a continuación:
Al observar la ruta, puede encontrar que esta ruta es exactamente la ruta establecida en log4j2.xml:
<
5. Más
Dirección GitHub de Log4J2: https://github.com/apache/logging-log4j2
La dirección del código de muestra de este tutorial: https://github.com/dkylin/springboot-sample/tree/master/springboot-log4j2
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.