Bajo el arranque de Spring, intenté usar log4j para registrar y agregar el archivo log4j.properties en el directorio src/main/recursos para personalizar el archivo de registro de salida, pero falló. Configuración de la ruta de registro en Application.yml La impresión del registro se imprimió correctamente, pero el registro de archivos de registro no se depugió correctamente. Revisé la información en línea y dije que Spring Boot usa logback para grabar registros de forma predeterminada. Después de muchos intentos, Log4J falló, por lo que cambió a logback para grabar, y la prueba final fue exitosa.
1. ¿Tiene alguna pregunta sobre la ruta del archivo de registro de arranque de Spring?
Las propiedades de registro.
Registro: ruta: /var /registro archivo: test.log
Solo el archivo Test.log se generará en la ruta raíz del proyecto, y el archivo de registro no se generará en la ruta especificada (la ruta de registro esperada es: logging.path + logging.file).
Razón: en el arranque de primavera, solo necesita configurar una de las dos propiedades: logging.path y logging.file. Si está configurado al mismo tiempo, use el atributo loging.file.
Cuando se configura la propiedad Loggin.Path, el archivo Spring.log se generará en esta ruta, es decir, el nombre de registro predeterminado Spring.log se usa en este momento.
Cuando se configura la propiedad Loggin.file, se genera un archivo de registro con el nombre especificado en la ruta especificada. El valor predeterminado es la ruta relativa del proyecto, y puede especificar una ruta absoluta para loging.file.
explotación florestal:
ruta:/var/logs # generar el archivo spring.log en/var/registro del directorio del directorio: /var/logs/test.log # generar el archivo test.log en/var/logs directorio
2. Razones para que logback reemplace log4j:
Aquí hay extractos de Internet:
Logback y log4j son muy similares. Si está familiarizado con Log4J, Logback será muy fácil acostumbrarse. Las siguientes son algunas ventajas de logback a través de log4j:
1. El núcleo que implementa logback se ha reescrito más rápido, y el rendimiento se mejora más de 10 veces en algunas rutas de ejecución clave. Además, Logback no solo mejora el rendimiento, sino que también carga la memoria inicial.
2. Muy suficiente Logback de prueba después de varios años, innumerables horas de pruebas. Las pruebas de Logback son completamente diferentes. En el punto de vista del autor, es simplemente importante elegir logback en lugar de log4j.
3. Logback-clásico implementa slf4j de manera muy natural. Logback-classic implementa slf4j. Cuando usa SLF4J, ni siquiera puede sentir logback-classic. Y debido a que logback-classic implementa SLF4J de manera muy natural, cambiar a log4j u otro es muy fácil. Está bien solo proporcionarlo en otro paquete JAR, y no hay necesidad de tocar el código implementado a través de SLF4JAPI.
4. Documentos muy suficientes, el sitio web oficial tiene más de 200 páginas de documentos.
5. Recargar automáticamente el archivo de configuración. Cuando se modifica el archivo de configuración, Logback-Classic puede volver a cargar automáticamente el archivo de configuración. El proceso de escaneo es rápido y seguro, y no requiere que se cree otro hilo de escaneo. Esta tecnología garantiza completamente que la aplicación pueda ejecutarse felizmente en el entorno JEE.
6. Lilith, Lilith es el observador de eventos log, similar a la motosierra Log4J. Lilith también puede procesar grandes cantidades de datos de registro.
7. Modo de precaución y recuperación muy amigable. En modo de precaución, múltiples instancias de FileAppender se ejecutan en múltiples JVM y pueden escribir de manera segura el mismo archivo de registro. RollingFilePeppers tendrá algunas limitaciones. FileAppender de Logback y sus subclases, incluida RollingFileAppender, pueden recuperarse de excepciones de E/S muy amigables.
8. Los archivos de configuración pueden manejar diferentes situaciones. Los desarrolladores a menudo necesitan juzgar que diferentes archivos de configuración de logback se encuentran en diferentes entornos (desarrollo, pruebas, producción). Y estos archivos de configuración son solo ligeramente diferentes, y se pueden implementar, y para que un archivo de configuración pueda adaptarse a múltiples entornos.
9. Los filtros, a veces, necesitan diagnosticar un problema y registrarlo. En LOG4J, el nivel de registro solo se puede reducir, pero esto producirá una gran cantidad de registros y afectará el rendimiento de la aplicación. En Logback, puede continuar manteniendo ese nivel de registro y eliminar algunas situaciones especiales. Por ejemplo, el usuario que ha iniciado sesión, su registro se golpeará a nivel de depuración y otros usuarios pueden continuar siendo golpeados en el nivel de advertencia. Para implementar esta función, solo se requieren 4 líneas de configuración XML. Puede consultar MDCFilter.
10. SifttingAppender (un apéndice muy multifuncional) se puede usar para dividir archivos de registro en función de los parámetros de ejecución dados. Por ejemplo, SifttingAppender puede distinguir los eventos de registro del seguimiento a la sesión del usuario, y luego cada usuario tendrá un archivo de registro.
11. Comprime automáticamente el registro que se ha impreso. Cuando se genera un nuevo archivo, el archivo de registro que se ha imprimido se comprimirá automáticamente. La compresión es un proceso asincrónico, por lo que incluso para archivos de registro grandes, las aplicaciones no se verán afectadas en el proceso de compresión.
12. El árbol de la pila tiene una versión de paquete. Logback traerá los datos del paquete cuando se publique.
13. Eliminar automáticamente archivos de registro antiguos. Al establecer la propiedad Maxhistory de TimeBasedRollingPolicy o SizeandTimeBasedFNATP, puede controlar el número máximo de archivos de registro que se han generado. Si MaxHistory 12 está configurado, esos archivos de registro que han pasado por 12 meses se eliminarán automáticamente.
En resumen, logback es mejor que log4j. ¡Construyamos todas nuestras aplicaciones en Logback!
3. Introducir logback en el proyecto
Agregar dependencias de paquetes, estilo maven:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency> <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>4.11</version> </dependency> <dependency> <MoupRid> net.logstash.log4j </groupid> <artifactid> jsonevenvent-layout </artifactid> <versever> 1.7 </versewer> </pendency>
4. Agregar logback.xml
Agregue el archivo logback.xml al directorio SRC/Main/Resources, y el sistema cargará automáticamente la configuración logback.xml.
logback.xml:
<? xml versión = "1.0" encoding = "utf-8"?> <Configuration scan = "true" scanPeriod = "60 segundos" debug = "false"> <include resource = "org/springFramework/boot/logging/logback/base.xml"/> <contextNEngnAnketback </contextName> <!-Log Directory-> <!-<Nombre de la propiedad "Nombre de la propiedad". value = "e: //test//logback.log"/>-> <<propiedad name = "log.path" value = "/ussers/chang/wetktop/chlogs/logback.log.log"/> <appender name = "stash"> <Destino> 192.168.220.83:9601 </Destino> <encoder name = "Console"> <!-<filter> <livel> Error </level> </filter>-> <coder> <pattern> %d {Hh: mm: ss.sss} %contextname [ %hilo] %-5Level %logger {36}- %msg %n </mattern> </coder> </apender> <!-salida a archivo->> "n. <Sche> $ {log.path} </file> <rollingpolicy> <filenamePattern> logback. %d {yyyyy-mm-dd} .log </filenamePattern> </rollingpolicy> <coder> <mattern> %d {hh: mm: ss.sss} contextname [ %hilt] %-5level) %msg %n </mattern> </coder> </papender> <root nivel = "info"> <appender-ref ref = "stash"/> <appender-ref ref = "console"/> <appender-ref ref = "file"/> </root> <!-logback es un paquete es un paquete en java <name de logger = "com.dudu.controller"/> logback.logback: clase <logger name = "com.dudu.controller.learncontroller" nivel = "warn" además = "false"> <appender-ref ref = "console"/> </logger>-> </figuration>5. Problema de la versión del codificador logstash-logback
En Spring-Boot, si usa logstash-logback-ender, es posible que deba decirle a Maven el número de versión específico para evitar conflictos de dependencia de paquetes. Por ejemplo, puede establecer las dependencias de logback-core, logback-classic y logback-access como lo siguiente:
<Properies> <ch.qos.logback.version> 1.2.3 </ch.qos.logback.version> </perties> <sependencyManagement> <pendencies> <pendency> <proupid> ch.qos.logback </proupid> <artifactid> logback-core <///velion> <potlé <Spendency> <MoupRoD> ch.Qos.logback </groupid> <artifactid> logback-classic </arfactid> <verserse> $ {ch.qos.logback.version} </version> </dependency> <pendency> <proupid> ch.qos.logback </groupid> <artifactid> logback-access </artifactid> <versión> $ {ch.qos.logback.version} </ververy> </dependency> </pepertency> </dependenceManagement>6. Construcción del servicio de logstash
referirse a:
1.Logstash-logback-coder
Resumir
El anterior es el método de usar logback, logstash y alk para grabar archivos de registro en el arranque de Spring introducido. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!