Cómo personalizar el formato de salida del registro del proyecto SpringBoot

El proyecto Springboot tiene varios marcos de registro. El valor predeterminado es usar el marco de registro Logback, pero me gusta usar el marco de registro Log4j2 porque Log4j2 tiene un rendimiento sólido, escalabilidad sólida, nivel personalizable, soporte para kafka4 y datos estables.

Inserte la descripción de la imagen aquí
El formato de registro de salida predeterminado es el que se muestra a continuación

Inserte la descripción de la imagen aquí
El formato de salida del registro después de usar el marco de registro log4j2 es el siguiente

Inserte la descripción de la imagen aquí
Los siguientes son los pasos para usar el marco de registro log4j2 para configurar el formato de salida del registro

1. Agregue la dependencia log4j2 en el archivo pom.xml y excluya la dependencia del registro de inicio de sesión predeterminado de Spring

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter</artifactId>
	<!-- 排除掉默认的日志框架 -->
	<exclusions>
		<exclusion>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-logging</artifactId>
		</exclusion>
	</exclusions>
</dependency>
<!-- log4j2日志 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

2. Cree un archivo log4j2-spring.xml en el directorio src / main / resources. El contenido del
Inserte la descripción de la imagen aquí
archivo log4j2-spring.xml es el siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<!--设置log4j2的自身log级别为warn -->
<configuration status="warn">
    <properties>
    	<!--这里配置的是日志存到文件中的路径-->
        <Property name="log_path">logs</Property>
    </properties>
    <appenders>
      <!--输出格式布局,每个转换说明符以百分号(%)开头,'%'后面的转换字符有如下:-->
            <!--
            p (level) 日志级别
            c(logger) Logger的Name
            C (class) Logger调用者的全限定类名 ***
            d (date) 日期
            highlight 高亮颜色
            l (location) 调用位置 ***
            L (line) 行号
            m (msg/message) 输出的内容
            M (methode) 调用方法 ***
            maker marker的全限定名
            n 输出平台相关的换行符,'\n' '\r\n'
            pid (processId) 进程ID
            level (p)日志级别
            r JVM启动后经过的微秒
            t (tn/thread/threadName) 线程名称
            T (tid/threadId) 线程ID
            tp (threadPriority) 线程优先级
            x (NDC) 线程Context堆栈
            -->
        <console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}][%t][%c(类):%L(行)] %m%n"/>
        </console>
        <!-- 这里配置了普通日志的格式和存入文件的路径 -->
        <!-- 如果fileName中是"../info.log",代表日志存放在和项目同级下-->
        <RollingFile name="RollingFileInfo" fileName="${log_path}/info.log"
                     filePattern="${log_path}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
            <Filters>
               <ThresholdFilter level="INFO"/>
                <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>
            </Filters>
            <PatternLayout pattern="[%d][%t][%c(类):%L(行)] %m%n"/> 
           <!--  <PatternLayout pattern="[%d][%t] -5level %m%n"/> -->
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                <SizeBasedTriggeringPolicy size="5 MB"/>
            </Policies>
        </RollingFile>
        <!-- 这里配置了警告日志的格式和存入文件的路径 -->
        <RollingFile name="RollingFileWarn" fileName="${log_path}/warn.log"
                     filePattern="${log_path}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
            <Filters>
              <ThresholdFilter level="WARN"/>
                <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
            </Filters>
             <PatternLayout pattern="[%d][%t][%c(类):%L(行)] %m%n"/> 
            <!-- <PatternLayout pattern="[%d][%t][%p][%c:%L] %m%n"/> -->
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                <SizeBasedTriggeringPolicy size="5 MB"/>
            </Policies>
        </RollingFile>
        <RollingFile name="RollingFileError" fileName="${log_path}/error.log"
                     filePattern="${log_path}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
             <ThresholdFilter level="ERROR"/>
            <PatternLayout pattern="[%d][%t][%c(类):%L(行)] %m%n"/>
           <!--  <PatternLayout pattern="[%d][%t]  %-5level %m%n"/> -->
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                <SizeBasedTriggeringPolicy size="5 MB"/>
            </Policies>
        </RollingFile>
        <!-- 配置mongdb appender -->
    </appenders>
    <loggers>
    	<!-- 过滤redis重连日志 -->
	   	<logger name="io.lettuce.core.protocol" level="ERROR">
	       	<appender-ref ref="ERROR_FILE" />
	   	</logger>
        <!--过滤掉spring的一些无用的debug信息-->
        <logger name="org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport" level="Error"></logger>
        <logger name="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" level="Error"></logger>
        <logger name="org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping" level="Error"></logger>
        <logger name="org.springframework.amqp.rabbit.connection.CachingConnectionFactory" level="Error"></logger>
        <logger name="org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer" level="Error"></logger>
        <logger name="org.springframework.boot.web.servlet.FilterRegistrationBean" level="Error"></logger>
        <logger name="org.springframework.jmx.export.annotation.AnnotationMBeanExporter" level="Error"></logger>
        <root level="INFO">
            <appender-ref ref="Console"/><!-- 配置控制台输出日志 -->
            <appender-ref ref="RollingFileInfo"/><!-- 配置普通日志 -->
            <appender-ref ref="RollingFileWarn"/><!-- 配置警告日志 -->
            <appender-ref ref="RollingFileError"/><!-- 配置异常日志 -->
        </root>
    </loggers>
</configuration>

3. Esta configuración está bien. Inicie el proyecto y podrá ver la información del registro de salida, con la clase correspondiente, el número correspondiente de líneas y el nombre del hilo correspondiente.

Inserte la descripción de la imagen aquí
La ruta del archivo donde se almacena el registro general, el registro de advertencia y la información de registro anormal (establecida en el archivo log4j2-spring.xml)

Inserte la descripción de la imagen aquí

Nota: Si el archivo log4j2-spring.xml no se coloca directamente en el directorio src / main / resources, entonces debe especificar la ruta en el archivo application.properties, como se muestra a continuación, si coloco log4j2-spring.xml archivo en src / main En el directorio / resources / static, la configuración es la siguiente y también se puede establecer el nivel de salida del registro

Inserte la descripción de la imagen aquí
Nivel de registro: OFF> FATAL> ERROR> WARN> INFO> DEBUG> TRACE> ALL

debug: en nombre del programa debugging log
info: en nombre de la información de salida general
advertir:
error de información de advertencia : información anormal
fatal: consecuencias catastróficas como errores del sistema

Todos son bienvenidos a leer. Tengo un conocimiento limitado e inevitablemente hay errores u omisiones en el blog que escribí. Espero que puedan darme algún consejo. Gracias. Creo que este artículo es útil, dale me gusta

Supongo que te gusta

Origin blog.csdn.net/qq_41936224/article/details/108791019
Recomendado
Clasificación