arquivo de configuração multiambiente de logback

fundo

Registre a configuração do arquivo de log para ambientes de desenvolvimento, teste e produção.
Logs com diferentes níveis de log correspondem a diferentes arquivos de log.

Estrutura de configuração do arquivo de log

Insira a descrição da imagem aqui

anexador

Usado para diferentes métodos de processamento de log definidos de acordo com diferentes níveis de log (níveis de saída de log trace > debug > info > warning > error).
Por exemplo, o método de processamento de log do ambiente de desenvolvimento dev é exibi-lo no console:

<!--控制台输出appender-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!--设置输出格式-->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <!--设置编码-->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

Nota: Como exibir logs no console (para configuração específica, consulte o conteúdo específico)

Método de processamento de log quando o nível de log é depurado:

<!-- 时间滚动输出 level为 DEBUG 日志 -->
    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <file>${log.path}/log_debug.log</file>
        <!--日志文件输出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 设置字符集 -->
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档 -->
            <fileNamePattern>${log.path}/debug/log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文件保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文件只记录debug级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>debug</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

Para outros níveis de métodos de processamento de log, consulte o arquivo de configuração completo no apêndice abaixo.

primaveraPerfil

Este nó é usado no desenvolvimento de vários ambientes e o atributo name é usado para identificar o nome do ambiente. Vários ambientes podem ser separados por vírgulas, por exemplo: "dev, test" (recomenda-se configurá-los separadamente)

raiz

O nó raiz é um nó obrigatório e é usado para especificar o nível de saída de log mais básico. Ele possui apenas um atributo de nível.

<root level="info">
     <appender-ref ref="DEBUG_FILE" />
     <appender-ref ref="INFO_FILE" />
     <appender-ref ref="WARN_FILE" />
     <appender-ref ref="ERROR_FILE" />
 </root>

Nota: Este parágrafo indica que o nível básico de saída do log é info, warning e error. Os métodos de processamento de log correspondem a INFO_FILE, WARN_FILE e ERROR_FILE respectivamente.

registrador

Root e logger têm uma relação pai-filho.Se não houver uma definição especial,o padrão é root.

<!-- 开发环境:打印控制台-->
    <springProfile name="dev">
        <!-- 表示这个包下的类,日志级别为debug,可用与打印sql日志。但推荐使用yml配置的方式-->
        <logger name="com.aliyu.mapper" level = "debug"/>
        <root level="info">
            <appender-ref ref="CONSOLE"/>
        </root>
    </springProfile>

Nota: Por exemplo, quando queremos inserir o log sql de mybatis (o nível de informação padrão não gerará log sql), podemos criar um logger para o pacote de classe java do mapeador. ps: Recomenda-se usar a configuração yml para configurar a exibição dos logs sql:

logging:
  level:
    com.aliyu.mapper: debug

Usado para definir o nível de impressão do log e a designação de um determinado pacote ou classe específica. Existe apenas um atributo de nome, um nível opcional e um atributo de adição opcional.
nome: usado para especificar um pacote ou uma classe específica que está sujeita a este criador de logs.
nível: utilizado para definir o nível de impressão, independente de maiúsculas e minúsculas: TRACE, DEBUG, INFO, WARN, ERROR, ALL e OFF.Existe
também um valor especial INHERITED ou o sinônimo NULL, que representa a execução forçada do nível superior.
Se esta propriedade não for definida, o criador de logs atual herdará o nível de seu superior.
addtivity: Se deve passar informações de impressão para o registrador superior. O padrão é verdadeiro

outro

Arquivo de configuração completo

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--设置存储路径变量-->
    <property name="log.path" value="F:/MycreatPro/log"/>
    <!--<property name="log.path" value="/home/log"/>-->

    <!--控制台输出appender-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!--设置输出格式-->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <!--设置编码-->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--输出到文件-->

    <!-- 时间滚动输出 level为 DEBUG 日志 -->
    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <file>${log.path}/log_debug.log</file>
        <!--日志文件输出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 设置字符集 -->
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档 -->
            <fileNamePattern>${log.path}/debug/log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文件保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文件只记录debug级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>debug</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 时间滚动输出 level为 INFO 日志 -->
    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <file>${log.path}/log_info.log</file>
        <!--日志文件输出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 每天日志归档路径以及格式 -->
            <fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文件保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文件只记录info级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 时间滚动输出 level为 WARN 日志 -->
    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <file>${log.path}/log_warn.log</file>
        <!--日志文件输出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文件保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文件只记录warn级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>warn</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 时间滚动输出 level为 ERROR 日志 -->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <file>${log.path}/log_error.log</file>
        <!--日志文件输出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文件保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文件只记录ERROR级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 开发环境:打印控制台-->
    <springProfile name="dev">
        <!-- 可单独设置某个包的日志级别。可用于打印sql日志,但推荐使用yml配置的方式-->
        <!--<logger name="com.aliyu.mapper" level = "debug"/>-->

        <!--
            root与logger是父子关系
            root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
            level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
            不能设置为INHERITED或者同义词NULL。默认是DEBUG
            可以包含零个或多个元素,标识这个appender将会添加到这个logger。
        -->
        <root level="warn">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="INFO_FILE" />
        </root>
    </springProfile>
    <!--测试环境:输出文件-->
    <springProfile name="test">
        <!--指定基础的日志输出级别   根据日志输出级别 trace > debug > info > warn > error ,
    得出info 级别下输出info > warn > error-->
        <root level="info">
            <appender-ref ref="DEBUG_FILE" />
            <appender-ref ref="INFO_FILE" />
            <appender-ref ref="WARN_FILE" />
            <appender-ref ref="ERROR_FILE" />
        </root>
    </springProfile>

    <!--生产环境-->
    <springProfile name="pro">
        <root level="info">
            <appender-ref ref="DEBUG_FILE" />
            <appender-ref ref="INFO_FILE" />
            <appender-ref ref="WARN_FILE" />
            <appender-ref ref="ERROR_FILE" />
        </root>
    </springProfile>



</configuration>

Se o nível de log for definido como warning, mas o método de processamento de log de warning não for especificado.

<springProfile name="dev">
    <root level="warn">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="INFO_FILE" />
    </root>
</springProfile>

Não haverá informações de registro de aviso.
Insira a descrição da imagem aqui
Outras estruturas de configuração:

<springProfile name="test">
	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
	   <!--设置输出格式-->
	    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
	        <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
	        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
	        <!--设置编码-->
	        <charset>UTF-8</charset>
	    </encoder>
	</appender>
	<root level="info">
	    <appender-ref ref="DEBUG_FILE" />
	    <appender-ref ref="INFO_FILE" />
	    <appender-ref ref="WARN_FILE" />
	    <appender-ref ref="ERROR_FILE" />
	</root>
</springProfile>

Nota: Este método de configuração de um nó springProfile por ambiente também é viável, mas acho que é mais apropriado definir o método de processamento de log anexador externamente.

Acho que você gosta

Origin blog.csdn.net/mofsfely2/article/details/109025016
Recomendado
Clasificación