Registro de inicialização da mola para arquivar com layout de padrões, níveis específicos de embalagem e políticas de rolagem
O registro é uma das partes mais importantes de qualquer aplicativo de inicialização de mola de grau de produção. Done right, it: Helps debug issues quickly Prevents log flooding Organizes logs for different modules or packages Manages file sizes automatically In this blog, we’ll configure logging so that: Logs are written to files with a custom pattern layout Different packages have different logging levels Logs are rolled over daily and by file size Log files are named using a date-based format Old logs are automatically cleaned up 1. Default Spring Boot Logging Behavior Spring Boot uses SLF4J as the logging fachada e logback como a implementação padrão do log. Por padrão: os logs vão para o nível de log do console é informação, nenhum arquivo de rolagem está configurado, precisamos personalizar isso para: armazenar logs em um controle de controle de políticas de rolagem de ajuste fino. src/main/resources/application.properties: ############################################ # LOGGING CONFIGURATION ############################################ # —- Log File Location —- logging.file.name = logs/app.log # grava em logs/app.log # —- Padrão de log para arquivo e console —- # Data Hora | Tópico | Nível | Logger | Mensagem logging.pattern.file =%d {yyyy-mm-dd hh: mm: ss.ss} [%thread] %-5level %logger {36}- %msg %n logging.pattern.console = %d {hh: mm: ss.ss} %-5levelvel [%thread] %logger {36}- %msg %n # —- Níveis de log específicos para o pacote —- logging.level.root = info logging.level.com.example.productapi.service = DEBUG LOGGING.LELELEL.SPRINGFLAME.PRODUCTAPI.REPOSITENTE = Warn Logging.level.orgflame.springfringflame.Blame.Blame.BeLeArcring.PringFlame.BaM.SpringfringFlame. Vontade: Envie logs para console e logs/app.log Use um padrão de registro de data e hora legível atribua diferentes níveis de log para diferentes pacotes ⚠️ Limitação: Application.Properties não podem configurar políticas de rolagem (por exemplo, tamanho do arquivo máximo, nomeação baseada em data). Para isso, precisamos de logback xml. 3. Advanced Rolling File Configuration with logback-spring.xml For enterprise-grade log management, we want: Time-based rolling (daily logs) Size-based rolling (split large logs into chunks) Retention policy (keep logs for N days) Date-based file naming Create src/main/resources/logback-spring.xml: scan=”true”> name=”LOG_HOME” value=”logs” /> name = “log_pattern” value = “%d {yyyy-mm-dd hh: mm: ss.ss} [%thread] %-5level %logger {36} – %msg %n “/> name =” file “class =” ch.qos.logback.core.rolling.rollingFileAppender “> $ {log_home} /pp.core.log $ {Log_pattern} Class =” ch.qos.Logback.Core.racback.rolling $ {Log_home}/app-%d {yyyy-mm-dd}.%I.log class = “ch.qos.logback.core.rolling.sizeandBasedfnatp”> 10mb 30 name = “console” class = “ch.qos.Logback.CORE.CONSONEPENDER 30 /> ref = “file” /> name = “com.example.productapi.service” nível = “debug” /> name = “com.example.productapi.repository” nível “warn” /> name = “org.springframework.web” como “Error” /> enter Modo Fullcreen Ext Manças Rolling. Modo de saída de tela cheia MaxHistory garante que os logs com mais de 30 dias sejam excluídos automaticamente Testlogs () {LOG.DEBUG (Mensagem de log de debug “); Modo de tela completa Você verá logs: logs do console/App.log e arquivos laminados aparecerão assim que as condições de tamanho/data forem atendidas. Níveis de log de layout de padrões personalizados Política de log específica com base na data e tamanho de limpeza automática após 30 dias, vamos estender a configuração de registro para que cada pacote faça login em seu próprio arquivo, com sua própria política de rolagem, o formato de nomeação de arquivos e a retenção) e a retenção de retenção. monitor each layer independently 1. Updated logback-spring.xml for Multiple Package-specific Files Place this in src/main/resources/logback-spring.xml: scan=”true”> name=”LOG_HOME” value=”logs” /> name=”LOG_PATTERN” value=”%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger {36} – %msg %n ” /> name =” max_file_size “value =” 10mb ” /> name =” max_history_days “value =” 30 ” /> name =” console “class =” ch.qos.Logback.core.ConsolEPpender “> {Log” class = “ch.qos.logback.core.rolling.rollingFileAppender”> $ {log_home} /pp.log $ {log_pattern} class = “ch.qos.logback.core.rolling.timebasedrollingpolicy”> $ {Log_home} class = “ch.qos.logback.core.rolling.sizeAndtimeBasedfnatp”> $ {max_file_size} $ {max_history_days} name = “service_file” class = “ch.qos.logback.core.hrolling.rollingFileApior”> $ {Log_pattern} class = “ch.qos.logback.core.rolling.TimeBasedRollingPolicy”> $ {log_home}/serviço-%d {yyyy-mm-dd}. $ {Max_history_days} name = “repository_file” class = “ch.qos.logback.core.rolling.rollingFilePpender”> $ {log_home} /repository.log $ {log_pattern} class = “ch.qos.Logback.Corback.ROLORORLING $ {LOG_PATTERN} =” ch.qos.Logback.Cortback.Rolling. $ {Log_home}/repositório-%d {yyyy-mm-dd}.%I.log class = “ch.qos.logback.core.rolling.sizeandtimeBasedFnatp”> $ {max_file_size} $ {max_history_days} Name = “” class = “ch.qos.logback.core.rolling.rollingFileAppender”> $ {log_home} /spring.log $ {log_pattern} class = “ch.qos.logback.core.rolling.timebasedrollingpolicy”> $ {Log_home} class = “ch.qos.logback.core.rolling.sizeAndtimeBasedfnatp”> $ {max_file_size} $ {max_history_days} nível = “info”> ref = “console” /> ref = “root_file” /> name = “com.exempi.poduct =” ref = “service_file” /> ref = “console” /> name = “com.example.productapi.repository” nível = “warn” additivity = “false”> ref = “repository_file” /> ref = “console” /> name = “org.springFramework”) Modo de tela cheia Full Screen Mode 2. Como isso funciona vários anexos de arquivo-um para cada categoria de log (serviço, repositório, mola, root). logs/service-2025-08-12.1.log logs/repository-2025-08-13.0.log logs/spring-2025-08-13.0.log Enter fullscreen mode Exit fullscreen mode 3. Benefits of This Approach Separation of Concerns — each package logs into its own file Easier Debugging — when investigating an issue, you can check only relevant logs Controlled Size & Retention — prevents huge unmanageable Arquivos de log amigável-funciona perfeitamente com ferramentas de agregação de log como alces, loki, splunk 4. Testando a configuração Você pode acionar logs em cada pacote e verificar se: os logs da camada de serviço vão para o serviço-yyyyy-mm-dd.Log Repositor App-yyyy-mm-dd.log
Fonte
Publicar comentário