<? xml version = " 1.0 " encoding = " UTF-8 " ?> <! - <configuration> <appender> </ appender> // Hay 1 o más, la función especifica el destino de salida del registro <root> </ root> // Hay a lo sumo uno, root logger <logger> <logger> // Hay 1 o más, logger ordinario </ configuration> -> <configuration> <! - Obtenga el nombre del proyecto del archivo spring local- -> <springProperty scope = " context " name = " PROJECT_NAME "source = " spring.application.name "/> <! - Imprimir formato de registro almacenado en el archivo-> <nombre de propiedad = " FILE_PATTEN " valor = " [% nivel] [% fecha {ISO8601}] [% logger] [% thread] [% X { clientIp}] [% X {requestId}] [% X {serverIp}] [% X {X-B3-TraceId}]% msg% n " /> <! - impreso en el formato de salida del archivo de consola- > < nombre de propiedad = " CONSOLE_PATTEN " valor = " [% resaltado (% -5 nivel)] [% fecha {ISO8601}] [% boldGreen (% logger)] [% boldYellow (% thread)] [% X {clientIp}] [% cian (% X {requestId})] [% X {serverIp}]% msg% n " /> <! - El registro se imprime en la consola- > <nombre del appender = " consola " class = " ch.qos.logback.core.ConsoleAppender " > <encoder> <pattern> $ {CONSOLE_PATTEN} </ pattern> </ encoder> </ appender> <! - Según la cantidad de archivos y el tamaño del archivo de registro La estrategia de reciclaje mantiene un máximo de 20 por día por un máximo de 100 billones cada uno, y un máximo de un día-> <appender name = " file " class = " ch.qos.logback.core.rolling.RollingFileAppender " > <file> $ {user.home } / logs / $ {PROJECT_NAME} / $ {PROJECT_NAME} .log </ file> <append> true </ append> <! - Especifica el nivel de salida del registro en un registro diferente-> <clase de filtro = "ch.qos.logback.classic.filter.LevelFilter " > <level> INFO </ level> <onMatch> ACCEPT </ onMatch> <onMismatch> DENY </ onMismatch> </ filter> <! - El archivo supera los 100 billones, Cree un nuevo archivo de registro, hasta 20 archivos de registro, limpie una vez al día- > <rollingPolicy class = " ch.qos.logback.core.rolling.FixedWindowRollingPolicy " > <! - Establezca el zip al final del archivo para la compresión-> < fileNamePattern> $ {user.home} / logs / $ {PROJECT_NAME} / $ {PROJECT_NAME}.% i.log </ fileNamePattern> <minIndex> 1 </ minIndex> <maxIndex>20 </maxIndex> </rollingPolicy> <triggeringPolicy class = " ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy " > <! - 日志 归档 大小 -> <maxFileSize> 1kB </maxFileSize> </triggeringPolicy> <encoder> <pattern> $ {FILE_PATTEN} </pattern> <charset> UTF- 8 </charset> </encoder> </appender> <! - 按照 日志 级别 打印 -> <nombre del adjunto = " error_file " class = " ch.qos.logback.core .rolling.RollingFileAppender "> <file> $ {user.home} / logs / $ {PROJECT_NAME} / error / $ {PROJECT_NAME} .log </ file> <append> true </ append> <! - Especifica el nivel de salida del registro en diferentes registros Los filtros personalizados generan varios tipos de registros como sql-> <filter class = " ch.qos.logback.classic.filter.LevelFilter " > <level> ERROR </ level> <onMatch> ACCEPT </ onMatch> < onMismatch> DENY </ onMismatch> </ filter> <rollingPolicy class = " ch.qos.logback.core.rolling.FixedWindowRollingPolicy " > <fileNamePattern> $ {user.home} / logs / $ {PROJECT_NAME} / $ {PROJECT_NAME} _error.% i.log </fileNamePattern> <minIndex> 1 </minIndex> <maxIndex> 20 </maxIndex> </ rollingPolicy > <triggeringPolicy class = " ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy " > <maxFileSize> 1KB </maxFileSize> </triggeringPolicy> <encoder> <pattern> $ {FILE_PATTEN} </pattern> <charset> UTF- 8 </charset> </encoder> </appender> <! - El registro se comprime diariamente y se actualiza automáticamente de acuerdo con los días de retención establecidos-> <appender name = " info_file " class = " ch.qos.logback.core.rolling.RollingFileAppender " > <file> $ {user.home } / logs / $ {PROJECT_NAME} / info / $ {PROJECT_NAME} .log </ file> <append> true </ append> <! - Especifique el nivel de salida del registro para diferentes registros, puede personalizar el filtro para generar una variedad de diferentes Escriba log como sql-> <filter class = " ch.qos.logback.classic.filter.LevelFilter " > <level> INFO </ level> <onMatch> ACCEPT </ onMatch> <onMismatch>NEGAR </onMismatch> </filter> <rollingPolicy <maxFileSize>100MB </maxFileSize>class = " ch.qos.logback.core.rolling.TimeBasedRollingPolicy " > <! - Genera el número de% cognitivo i representantes-> <! - <fileNamePattern> $ {user.home} / logs / $ {PROJECT_NAME} / info / $ {PROJECT_NAME} -% d {aaaa-MM-dd}.% I.log-> <fileNamePattern> $ {user.home} / logs / $ {PROJECT_NAME} / info / $ { PROJECT_NAME} -% d {aaaa-MM-dd}.% I.log.zip </ fileNamePattern> <! - ¿Qué tan grande es el registro para archivar-> <timeBasedFileNamingAndTriggeringPolicy class = " ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP " > <! - Número de días para guardar-> </ timeBasedFileNamingAndTriggeringPolicy> <MaxHistory> 2 </ MaxHistory> </ rollingPolicy> <encoder> <pattern> $ {FILE_PATTEN} </ pattern> <charset> UTF- 8 </ charset> </ encoder> </ appender> <! - Especifique el registro de entorno para imprimir Establezca el nivel de registro de impresión en la consola y el archivo-> <springProfile name = " test " > <root level = " DEBUG " > <appender- ref ref = " console "/> <appender- ref ref = " archivo "/> <appender- ref ref = " error_file " > </ appender- ref > <appender- ref ref = " info_file " > </ appender- ref > </root> </springProfile> </configuration>