SpringBoot integra o sistema de log slf4j

Plataforma do autor:

| CSDN: blog.csdn.net/qq\_4115394…

| Pepitas: juejin.cn/user/651387…

| Zhihu: www.zhihu.com/people/1024…

| GitHub: github.com/JiangXia-10…

| Conta pública do WeChat: 1024 notas

Este artigo tem cerca de 4777 palavras e o tempo estimado de leitura é de 11 minutos

prefácio

Como uma das partes importantes de um sistema aplicativo, o sistema de log pode nos ajudar a encontrar e localizar problemas em tempo hábil se houver problemas no ambiente online do sistema, de modo a resolver problemas, garantir alta disponibilidade de serviços e reduzir os acidentes de produção. Portanto, a importância do log é evidente.

Existem muitas estruturas de log usadas no desenvolvimento Java, como JUL (java.util.logging), log4j, logback, JCL (Jakarta commons-logging) e assim por diante. O SpringBoot fornece um sistema de registro. O SpringBoot escolhe a combinação de SLF4J + Logback por padrão. Se você não precisar mudar para outros sistemas de registro (como Log4j2, etc.), nenhuma configuração redundante é necessária. O LogBack imprimirá os registros no console por padrão. Como os novos projetos Spring Boot geralmente se referem a spring-boot-starter ou spring-boot-starter-web, e essas duas dependências iniciais já incluem dependências em spring-boot-starter-logging, portanto, não precisamos de dependências Add adicionais.

Em seguida, este artigo resume principalmente a configuração de log slf4j integrada do SpringBoot atualmente usada no projeto.

o que é slf4j

slf4j, o nome completo é Simple Logging Facade for Java****, que é um log de fachada simples . É uma especificação, padrão e interface formulada para todas as estruturas de log, não uma implementação específica de uma estrutura e serve apenas para vários sistemas de log.

O slf4j fornece uma interface unificada para gravar logs e abstrai a implementação específica de diferentes sistemas de log, desde que grave de acordo com o método fornecido, o formato final do log, o nível de gravação, o método de saída etc. completar. Se slf4j for usado para gravar logs no projeto e log4j estiver vinculado (a dependência do pacote jar correspondente é configurada em pom. Basta substituir o pacote jar log4j por logback e não há necessidade de modificar o código do arquivo de log em tudo .

Como mencionado anteriormente, o SpringBoot escolhe a combinação de SLF4J + Logback por padrão.Se você não precisar mudar para outros sistemas de log, poderá usá-lo sem configuração redundante. Primeiro, vejamos o uso mais simples, como a seguir, introduza o Logger logging na classe de inicialização e veja os resultados do log impresso:

public class SpringbootdemoApplication {
    private static final Logger logger = LoggerFactory.getLogger(SpringbootdemoApplication.class);
    public static void main(String[] args) {
        logger.info("===============项目启动了===============");
        SpringApplication.run(SpringbootdemoApplication.class, args);
        logger.info("===============启动成功了===============");
    }
}
复制代码

Depois que o projeto é iniciado com sucesso, as informações de log do console são as seguintes:

O método principal aqui é getLogger(xxxxxxx.class) de LoggerFactory. Este método é para passar a classe atual como um parâmetro de entrada, e o log de saída exibirá o nome da classe xxx correspondente. A vantagem de tal instrução é que é conveniente localizar os logs, e escrever informações de classe com precisão pode fornecer a eficiência de localizar rapidamente os logs.

Embora o SpringBoot forneça o slf4j, o registro precisa ser configurado de acordo com as reais necessidades do projeto para nos ajudar a usá-lo melhor.

use slf4j

Como springboot integra slf4j por padrão, spring-boot-starter ou spring-boot-starter-web é geralmente referenciado em novos projetos Spring Boot, e essas duas dependências iniciais já incluem dependências spring-boot-starter-logging, então não há necessidade para importar dependências adicionais no arquivo pom. Se você importar dependências relacionadas ao sl4j novamente, vários erros da mesma dependência podem aparecer.

Em seguida, observe a configuração relevante no arquivo de configuração application.yml. Para a personalização do log, você pode configurá-lo no arquivo de configuração:

foto

Por exemplo, parte da minha configuração aqui é a seguinte:

logging:
#logging.config是用来指定项目启动的时候,读取哪个配置文件,这里指定的是日志配置文件,即子module项目根路径下的 logback.xml文件,该文件是日志的主要配置信息。
  config: /workspace/java/SpringBootWorkSpace/src/main/resources/locbak.xml
 # level用来配置指定包的路径下应用程序的日志记录,及其日志级别。
  level:
    root: info
    com.springboot.springbootdemo.controller: trace
    com.springboot.springbootdemo.service: debug
    com.springboot.springbootdemo.dao: debug
复制代码

logging.level é usado para especificar o nível de saída do log do aplicativo em um pacote específico. trace indica que todos os níveis de saída de log no pacote com.springboot.springbootdemo.controller serão rastreados e imprimirão o sql que opera o banco de dados. Defina-o como rastreamento durante o desenvolvimento para facilitar a localização de problemas. No ambiente de produção, defina isso nível de log para O nível de erro está bom.

Os cinco níveis de logs comumente usados, de baixo a alto de acordo com a gravidade , são: debug (depuração) < info (mensagem) < warning (aviso) < erro (erro) < fatal (erro grave) . Normalmente, vários deles podem ser selecionados de acordo com o tamanho da granularidade real necessária, e os 4 níveis de depuração, informação, aviso e erro são comumente usados.

O desenvolvimento real precisa formular o conteúdo do arquivo de configuração do log, de modo que, após a execução do sistema, as informações de log especificadas de que precisamos possam ser geradas de acordo com os requisitos personalizados. Você pode adicionar um arquivo de configuração locbak.xml na pasta de recursos e definir o caminho de configuração (precisa ser um caminho absoluto) no arquivo de configuração application.yml como acima. Os detalhes do arquivo de configuração logback.xml são os seguintes:

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    <property name="LOG_HOME" value="/SpringBootWorkSpace/SpringBootWorkSpace/logs"/>    <!-- 定义日志格式  -->
    <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] [%-30.30logger{30}] %msg%n"/>
    <!-- 控制台输出 -->
    <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>
        </encoder>
    </appender>
    <!-- 按照每天生成日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>${LOG_HOME}/SpringBootWorkSpace-Slf4j_%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <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>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <!-- 日志输出级别 -->
    <logger name="org.springframework" level="INFO"/>
    <logger name="root" level="INFO"/>
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>
复制代码

Em logback.xml, você pode definir o formato de saída do log, caminho, formato de saída do console, tamanho do arquivo, tempo de armazenamento, etc. Na verdade, esses arquivos também podem ser configurados no arquivo de configuração application.yml, como:

logging:
# 日志文件最大的大小
  file:
    max-size: 10MB
   # 日志文件保留天数
    max-history: 7
复制代码

Após a conclusão da configuração acima, o projeto de inicialização gerará o arquivo de log correspondente de acordo com a configuração no caminho de armazenamento de log configurado no arquivo de configuração logback.xml, conforme a seguir:

imagem.png

imagem.png

Resumir

A poderosa função do sistema de log é uma ferramenta útil para nosso desenvolvimento diário e manutenção do sistema para solucionar problemas. Portanto, configurar um sistema de log razoável de acordo com nosso projeto real nos ajudará a desenvolver e manter melhor o sistema de projeto!

Se você tiver alguma dúvida ou erro, seja bem-vindo para se comunicar, discutir e aprender juntos!

O código-fonte deste projeto está em:

github.com/JiangXia-10…

Bem-vindo ao download, estrela!

sugestão relacionada:

Acho que você gosta

Origin blog.csdn.net/qq_41153943/article/details/124896505
Recomendado
Clasificación