Tutorial básico do springboot2.x: configuração do log

No processo de desenvolvimento do projeto, os desenvolvedores estarão familiarizados com o log. Os logs podem registrar o rastreamento da operação do programa, fornecer informações importantes na operação do software, nos ajudar na solução e localização de problemas, otimizar o desempenho do programa e monitorar o status da operação do programa.
O spring-boot-starter do projeto SpringBoot refere-se a spring-boot-starter-logging por padrão, onde a camada inferior usa a estrutura de logback de log e a função de log pode ser usada com configuração zero por padrão.
Antes de explicar a configuração do log do springboot, vamos falar brevemente sobre o conhecimento básico dos logs JAVA.

Tempo de registro

  • Registre os parâmetros de inicialização do programa e julgue o status de execução do programa
  • O código lança uma exceção e registra o estado anormal do programa
  • O processo de negócios não corresponde ao resultado esperado e o estado anormal de negócios é registrado
  • Negócio central do sistema, operação da autoridade central. Por exemplo, os registros de operação, como login e pagamento, geralmente são incluídos no banco de dados para análise.

Estrutura de registro Java

Para estruturas de log, geralmente vemos substantivos como log4j e logback, e também encontramos conflitos entre nosso próprio projeto e a biblioteca de log de um jar de terceiros.
A primeira vez que você entra em contato com eles, pode sentir que nuvens e névoas são incompreensíveis.Aqui está uma breve introdução ao relacionamento entre a estrutura de log Java. Razões históricas mais específicas, detalhes. Existem vários artigos na Internet que são muito bons, e vou anexá-los à sua própria compreensão de leitura:

  1. Saiba que existe um artigo acima: java log frame analysis
  2. Há um artigo no blog: Introdução ao Java Common Log Framework

Depois de ler o artigo acima, um breve resumo da estrutura de criação de log Java é dividido em 3 categorias:

  • A implementação específica da estrutura de log Java: log4j1.x, JUL (Java Util Log), Logback, log4j2-core
  • O objeto de fachada do framework de registro Java fornece apenas a interface, mas não a implementação específica: JCL (Commons Logging), SLF4J (The Simple Logging Facade for Java), log4j2-api
  • Adaptador entre estruturas de registro Java, a fim de converter diferentes estruturas de registro: jcl-over-slf4j, slf4j-jcl, log4j-over-slf4j, slf4j-log4j12, etc.
    Fonte de fotos online

Melhores práticas para a estrutura de registro (link de referência da fonte, aqui está apenas um trecho):

  1. Sempre use Log Facade em vez de Implementação de Log específica
  2. Adicione apenas uma dependência de implementação de log
  3. A dependência de implementação de log específico deve ser definida como opcional e usar o escopo de tempo de execução
  4. Se necessário, exclua as dependências de Impementação de Log em bibliotecas de terceiros dependentes
  5. Evite gerar registros desnecessários, e campos de registro desnecessários, como números de linha, afetam o desempenho do programa

Configuração de log SpringBoot

Dependência de log

Springboot usa a combinação de SLF4J + Logback para gravar logs por padrão, e você pode ver as dependências, então não precisamos introduzi-las.

configuração de log do springboot

logging:
  level:
    #包的日志级别
    org.springframework.web: DEBUG
  #自定义log信息
  config: classpath:config/logback-spring.xml
  pattern:
    #控制台的日志输出格式
    console: '%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n'
    #文件的日志输出格式
    file: '%d{yyyy/MM/dd-HH:mm} [%thread] %-5level %logger- %msg%n'
  file:
    #日志名称
    name: app.log
    #存储的路径
    path: /var/log/
    #存储的最大值
    max-size: 50MB
    #保存时间
    max-history: 7

Configuração de log personalizado

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--获取变量名中关于日志存储的路径与存储名称-->
    <springProperty scope="context" name="logPath" source="logging.file.path"/>
    <springProperty scope="context" name="logName" source="logging.file.name"/>
    <!--输出到控制台的appender-->
    <appender name="Console"
              class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
            </Pattern>
        </layout>
    </appender>
    <!--输出到文件的appender-->
    <appender name="RollingFile"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logPath}/${logName}</file>
        <encoder
                class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
        </encoder>

        <rollingPolicy
                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily and when the file reaches 10 MegaBytes -->
            <fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>

    <!--开发环境基本级别为DEBUG-->
    <springProfile name="dev">
        <root level="DEBUG">
            <appender-ref ref="Console"/>
        </root>
    </springProfile>
    <!--生产环境输入到文件中-->
    <springProfile name="prod">
        <root level="INFO">
            <appender-ref ref="RollingFile"/>
        </root>
    </springProfile>
</configuration>

Mil milhas começam com um único passo. Aqui está o oitavo artigo da série de tutoriais SpringBoot. Todos os códigos-fonte do projeto podem ser baixados em meu GitHub .

Acho que você gosta

Origin blog.csdn.net/github_35592621/article/details/108248869
Recomendado
Clasificación