¿Qué es el marco de registro Logback.xml? Ejemplo de ConsoleAppender, FileAppender y RollingFileAppender
Publicado: 2019-02-13
¿Conoce Logback Logging Framework
? Bueno, la mayoría de la gente usa principalmente log4j and slf4j
en su proyecto. Desde los últimos 6 meses he estado usando el marco de registro Logback.xml
y diría que vi bastantes mejoras de rendimiento en mi aplicación de producción.
En este tutorial, repasaremos un ejemplo práctico del marco de registro Logback.
¿Qué es logback.qos.ch?
Logback es una especie de nueva versión de Log4j. Fue desarrollado desde donde se detuvo el desarrollo de log4j.

En Crunchify, hemos publicado varios tutoriales sobre Log4j si está interesado:
- ¿Cómo configurar su propio nivel de registro de log4j?
- ¿Cómo configurar log4j.properties?
Aquí repasaremos todos los pasos detallados sobre cómo configurar Logback Logging Framework para su Enterprise Java Project. Vamos a crear a continuación nuevos archivos.
- En el archivo
logback.xml
de la carpeta de recursos - Clase Java
CrunchifyLogbackLogging.java
Empecemos
Paso-1 Crear archivo logback.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
<? xml version = "1.0" encoding = "UTF-8" ?> < configuration > < appender name = "CRUNCHIFYOUT" class = "ch.qos.logback.core.ConsoleAppender" > < layout class = "ch.qos.logback.classic.PatternLayout" > < Pattern > % d { HH : mm : ss . SSS } [ % thread ] % - 5level % logger { 36 } % X { sourceThread } - % msg % n < / Pattern > < / layout > < / appender > < appender name = "CRUNCHIFYFILE" class = "ch.qos.logback.core.FileAppender" > < file > / Users / ashah / Documents / crunchify . log < / file > < encoder > < pattern > % date % level [ % thread ] % logger { 10 } [ % file : % line ] % msg % n < / pattern > < / encoder > < / appender > < appender name = "CRUNCHIFYROLLING" class = "ch.qos.logback.core.rolling.RollingFileAppender" > < file > / Users / ashah / Documents / crunchify - rolling . log < / file > < encoder class = "ch.qos.logback.classic.encoder.PatternLayoutEncoder" > < Pattern > % d { yyyy - MM - dd HH : mm : ss } [ % thread ] % level % logger { 35 } - % msg % n < / Pattern > < / encoder > < rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" > < ! -- We are rolling over daily -- > < fileNamePattern > crunchify . log . timeroll . % d { yyyy - MM - dd } . log < / fileNamePattern > < ! -- keep 10 days ' worth of history capped at 1GB total size -- > < maxHistory > 10 < / maxHistory > < totalSizeCap > 1GB < / totalSizeCap > < / rollingPolicy > < / appender > < ! -- default is DEBUG -- > < root level = "DEBUG" > < appender - ref ref = "CRUNCHIFYOUT" / > < appender - ref ref = "CRUNCHIFYFILE" / > < appender - ref ref = "CRUNCHIFYROLLING" / > < / root > < / configuration > |
Entendamos primero el archivo logback.xml.
- En la parte inferior de un archivo, verá que tenemos 3 referencias de
appender-ref
debajo del elementoroot
. - Estamos usando el nivel de registro como
DEBUG
. Eso significa imprimir todo con nivel DEBUG y superior.
El agregador CRUNCHIFYOUT
es de clase ch.qos.logback.core. ConsoleAppender
. Lo que significa que todos los datos de registro se imprimirán en Eclipse Console.
CRUNCHIFYFILE
es del tipo ch.qos.logback.core. FileAppender
. Eso significa que todos los datos de registro también se imprimirán en el archivo local. En nuestro caso, es /Users/ ashah /Documents/ crunchify.log
.
CRUNCHIFYROLLING
es de tipo ch.qos.logback.core.rolling. RollingFileAppender
. Como puede ver en rollingPolicy, procesamos archivos todos los días y mantenemos un máximo de 10 archivos. Además, existe un límite de capacidad de archivo total que es 1 GB
en nuestro ejemplo. Se creará un nuevo archivo en la ubicación /Users/ ashah /Documents/ crunchify -rolling.log
.
Paso 2 Escriba el programa Java para probarlo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
package crunchify . com . tutorial ; import org . slf4j . Logger ; import org . slf4j . LoggerFactory ; /** * @author Crunchify.com * Program: Very simple Logback.xml test class with ConsoleAppender, FileAppender and RollingFileAppender * Version: 1.0.0 * */ public class CrunchifyLogbackLogging { private final Logger crunchifyLogging = LoggerFactory . getLogger ( CrunchifyLogbackLogging . class ) ; public static void main ( String [ ] args ) { CrunchifyLogbackLogging crunchifyLogger = new CrunchifyLogbackLogging ( ) ; crunchifyLogger . getStartedwithLogBackTesting ( ) ; } private void getStartedwithLogBackTesting ( ) { for ( int i = 1 ; i < = 10 ; i ++ ) { crunchifyLogging . debug ( "......This is test by Crunchify on Logback DEBUG...... " ) ; crunchifyLogging . info ( "......This is test by Crunchify on Logback INFO......" ) ; crunchifyLogging . error ( "......This is test by Crunchify on Logback ERROR......" ) ; crunchifyLogging . warn ( "......This is test by Crunchify on Logback WARN......" ) ; } } } |
Esta es una clase de prueba de Java muy simple, en la que usamos error, información, depuración y advertencia en los 4 niveles de registro. Estamos recorriendo 10 veces.
Paso 3
Una vez que ejecute el programa anterior, el marco de inicio de sesión creará dos nuevos archivos como se mencionó anteriormente.

Consulte su consola Eclipse. Verá los siguientes registros:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
15 : 36 : 12 , 978 | - INFO in ch . qos . logback . classic . LoggerContext [ default ] - Could NOT find resource [ logback - test . xml ] 15 : 36 : 12 , 978 | - INFO in ch . qos . logback . classic . LoggerContext [ default ] - Could NOT find resource [ logback . groovy ] 15 : 36 : 12 , 978 | - INFO in ch . qos . logback . classic . LoggerContext [ default ] - Found resource [ logback . xml ] at [ file : / Users / ashah / Documents / site / Bitbucket / crunchifytutorials / target / classes / logback . xml ] 15 : 36 : 13 , 077 | - INFO in ch . qos . logback . classic . joran . action . ConfigurationAction - debug attribute not set 15 : 36 : 13 , 077 | - INFO in ch . qos . logback . core . joran . action . AppenderAction - About to instantiate appender of type [ ch . qos . logback . core . ConsoleAppender ] 15 : 36 : 13 , 087 | - INFO in ch . qos . logback . core . joran . action . AppenderAction - Naming appender as [ CRUNCHIFYOUT ] 15 : 36 : 13 , 143 | - WARN in ch . qos . logback . core . ConsoleAppender [ CRUNCHIFYOUT ] - This appender no longer admits a layout as a sub - component , set an encoder instead . 15 : 36 : 13 , 143 | - WARN in ch . qos . logback . core . ConsoleAppender [ CRUNCHIFYOUT ] - To ensure compatibility , wrapping your layout in LayoutWrappingEncoder . 15 : 36 : 13 , 143 | - WARN in ch . qos . logback . core . ConsoleAppender [ CRUNCHIFYOUT ] - See also http : //logback.qos.ch/codes.html#layoutInsteadOfEncoder for details 15 : 36 : 13 , 144 | - INFO in ch . qos . logback . core . joran . action . AppenderAction - About to instantiate appender of type [ ch . qos . logback . core . FileAppender ] 15 : 36 : 13 , 147 | - INFO in ch . qos . logback . core . joran . action . AppenderAction - Naming appender as [ CRUNCHIFYFILE ] 15 : 36 : 13 , 147 | - INFO in ch . qos . logback . core . joran . action . NestedComplexPropertyIA - Assuming default type [ ch . qos . logback . classic . encoder . PatternLayoutEncoder ] for [ encoder ] property 15 : 36 : 13 , 148 | - INFO in ch . qos . logback . core . FileAppender [ CRUNCHIFYFILE ] - File property is set to [ / Users / ashah / Documents / crunchify . log ] 15 : 36 : 13 , 151 | - INFO in ch . qos . logback . core . joran . action . AppenderAction - About to instantiate appender of type [ ch . qos . logback . core . rolling . RollingFileAppender ] 15 : 36 : 13 , 152 | - INFO in ch . qos . logback . core . joran . action . AppenderAction - Naming appender as [ CRUNCHIFYROLLING ] 15 : 36 : 13 , 159 | - INFO in c . q . l . core . rolling . TimeBasedRollingPolicy @ 2096171631 - setting totalSizeCap to 1 GB 15 : 36 : 13 , 161 | - INFO in c . q . l . core . rolling . TimeBasedRollingPolicy @ 2096171631 - No compression will be used 15 : 36 : 13 , 163 | - INFO in c . q . l . core . rolling . TimeBasedRollingPolicy @ 2096171631 - Will use the pattern crunchify . log . timeroll . % d { yyyy - MM - dd } . log for the active file 15 : 36 : 13 , 166 | - INFO in c . q . l . core . rolling . DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern 'crunchify.log.timeroll.%d{yyyy-MM-dd}.log' . 15 : 36 : 13 , 166 | - INFO in c . q . l . core . rolling . DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll - over at midnight . 15 : 36 : 13 , 171 | - INFO in c . q . l . core . rolling . DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Thu Sep 07 11 : 42 : 27 CDT 2017 15 : 36 : 13 , 173 | - INFO in ch . qos . logback . core . rolling . RollingFileAppender [ CRUNCHIFYROLLING ] - Active log file name : / Users / ashah / Documents / crunchify - rolling . log 15 : 36 : 13 , 173 | - INFO in ch . qos . logback . core . rolling . RollingFileAppender [ CRUNCHIFYROLLING ] - File property is set to [ / Users / ashah / Documents / crunchify - rolling . log ] 15 : 36 : 13 , 173 | - INFO in ch . qos . logback . classic . joran . action . RootLoggerAction - Setting level of ROOT logger to DEBUG 15 : 36 : 13 , 174 | - INFO in ch . qos . logback . core . joran . action . AppenderRefAction - Attaching appender named [ CRUNCHIFYOUT ] to Logger [ ROOT ] 15 : 36 : 13 , 174 | - INFO in ch . qos . logback . core . joran . action . AppenderRefAction - Attaching appender named [ CRUNCHIFYFILE ] to Logger [ ROOT ] 15 : 36 : 13 , 174 | - INFO in ch . qos . logback . core . joran . action . AppenderRefAction - Attaching appender named [ CRUNCHIFYROLLING ] to Logger [ ROOT ] 15 : 36 : 13 , 174 | - INFO in ch . qos . logback . classic . joran . action . ConfigurationAction - End of configuration . 15 : 36 : 13 , 175 | - INFO in ch . qos . logback . classic . joran . JoranConfigurator @ 7e0babb1 - Registering current configuration as safe fallback point 15 : 36 : 13.181 [ main ] DEBUG c . c . tutorial . CrunchifyLogbackLogging - . . . . . . This is test by Crunchify on Logback DEBUG . . . . . . 15 : 36 : 13.186 [ main ] INFO c . c . tutorial . CrunchifyLogbackLogging - . . . . . . This is test by Crunchify on Logback INFO . . . . . . 15 : 36 : 13.187 [ main ] ERROR c . c . tutorial . CrunchifyLogbackLogging - . . . . . . This is test by Crunchify on Logback ERROR . . . . . . 15 : 36 : 13.187 [ main ] WARN c . c . tutorial . CrunchifyLogbackLogging - . . . . . . This is test by Crunchify on Logback WARN . . . . . . 15 : 36 : 13.188 [ main ] DEBUG c . c . tutorial . CrunchifyLogbackLogging - . . . . . . This is test by Crunchify on Logback DEBUG . . . . . . 15 : 36 : 13.188 [ main ] INFO c . c . tutorial . CrunchifyLogbackLogging - . . . . . . This is test by Crunchify on Logback INFO . . . . . . 15 : 36 : 13.188 [ main ] ERROR c . c . tutorial . CrunchifyLogbackLogging - . . . . . . This is test by Crunchify on Logback ERROR . . . . . . 15 : 36 : 13.188 [ main ] WARN c . c . tutorial . CrunchifyLogbackLogging - . . . . . . This is test by Crunchify on Logback WARN . . . . . . |
Además de eso, también puede verificar los registros de archivos locales y, como puede ver, el archivo logback.xml
creó todos los archivos nuevos y comenzó a imprimir registros dentro de él.


Disfrute, ha configurado logback.xml y los 3 appenders correctamente: ConsoleAppender, FileAppender, RollingFileAppender.
Punto de bonificación:
¿Desea configurar RollingFileAppender
con FixedWindowRollingPolicy
? Bueno, use el anexador a continuación y colóquelo en el archivo logback.xml y debería estar todo bien
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
< appender name = "CRUNCHIFYROLLINGFIXEDWINDOW" class = "ch.qos.logback.core.rolling.RollingFileAppender" > < file > / Users / ashah / Documents / crunchify - rolling - fixwindows . log < / file > < encoder class = "ch.qos.logback.classic.encoder.PatternLayoutEncoder" > < pattern > % date % level [ % thread ] % logger { 10 } [ % file : % line ] % msg % n < / pattern > < / encoder > < rollingPolicy class = "ch.qos.logback.core.rolling.FixedWindowRollingPolicy" > < FileNamePattern > crunchify . log . fixedsize . { yyyy - MM - dd } % i . log < / FileNamePattern > < MinIndex > 1 < / MinIndex > < MaxIndex > 15 < / MaxIndex > < / rollingPolicy > < triggeringPolicy class = "ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy" > < MaxFileSize > 20MB < / MaxFileSize > < / triggeringPolicy > < / appender > |
Además, simplemente agregue appender-ref debajo del elemento raíz.
1 |
< appender - ref ref = "CRUNCHIFYROLLINGFIXEDWINDOW" / > |