Spring Boot配置多个日志文件记录不同类日志示例

news2024/11/27 12:54:01

了解如何使用多个文件追加器在Spring 引导应用程序中创建多个日志文件。了解如何使用翻转策略、归档等配置所有文件追加器,wiihlog4j2和日志配置。

1. 带登录的多个日志文件

以下文件包含 5 个记录器。我们可以根据需要创建更多的记录器。logback.xml

  • console– 将输出记录到控制台。包括所有日志语句。
  • applicationLog– 将输出记录到。包括包的应用程序日志。application.logdebugcom.howtodoinjava.demo
  • aopLog– 将输出记录到。在包中包含应用程序日志。application-aop.loginfocom.howtodoinjava.demo.aop
  • springLog– Createand 包含 spring 框架生成的所有错误日志。spring-framework.log
  • hibernateLog– 创建并包含休眠生成的所有错误日志。database.log

放置给定资源文件夹。logback.xml

<configuration>
 
  <property name="LOG_PATTERN" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %p %m%n" />
  <property name="APP_LOG_ROOT" value="c:/temp"/>
   
  <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
      <encoder>
          <pattern>${LOG_PATTERN}</pattern>
      </encoder>
    </appender>
 
  <appender name="applicationLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${APP_LOG_ROOT}/application.log</file>
    <encoder>
      <pattern>${LOG_PATTERN}</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
          <fileNamePattern>${APP_LOG_ROOT}/application-%i.log</fileNamePattern>
          <minIndex>1</minIndex>
          <maxIndex>10</maxIndex>
      </rollingPolicy>
      <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
          <maxFileSize>10MB</maxFileSize>
      </triggeringPolicy>
  </appender>
   
  <appender name="aopLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${APP_LOG_ROOT}/application-aop.log</file>
    <encoder>
      <pattern>${LOG_PATTERN}</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
          <fileNamePattern>${APP_LOG_ROOT}/application-aop-%i.log</fileNamePattern>
          <minIndex>1</minIndex>
          <maxIndex>10</maxIndex>
      </rollingPolicy>
      <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
          <maxFileSize>10MB</maxFileSize>
      </triggeringPolicy>
  </appender
   
  <appender name="springLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${APP_LOG_ROOT}/spring-framework.log</file>
    <encoder>
      <pattern>${LOG_PATTERN}</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
          <fileNamePattern>${APP_LOG_ROOT}/spring-framework-%i.log</fileNamePattern>
          <minIndex>1</minIndex>
          <maxIndex>10</maxIndex>
      </rollingPolicy>
      <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
          <maxFileSize>10MB</maxFileSize>
      </triggeringPolicy>
  </appender
   
  <appender name="hibernateLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${APP_LOG_ROOT}/database.log</file>
    <encoder>
      <pattern>${LOG_PATTERN}</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
          <fileNamePattern>${APP_LOG_ROOT}/database-%i.log</fileNamePattern>
          <minIndex>1</minIndex>
          <maxIndex>10</maxIndex>
      </rollingPolicy>
      <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
          <maxFileSize>10MB</maxFileSize>
      </triggeringPolicy>
  </appender
   
  <logger name="com.howtodoinjava.demo" level="DEBUG">
    <appender-ref ref="applicationLog" />
    <appender-ref ref="console" />
  </logger>
   
  <logger name="com.howtodoinjava.demo.aop" level="INFO">
    <appender-ref ref="aopLog" />
    <appender-ref ref="console" />
  </logger>
   
  <logger name="org.springframework" level="DEBUG">
    <appender-ref ref="springLog" />
    <appender-ref ref="console" />
  </logger>
   
  <logger name="org.hibernate" level="DEBUG">
    <appender-ref ref="hibernateLog" />
    <appender-ref ref="console" />
  </logger>
 
   <root level="info">
      <appender-ref ref="console" />
   </root>
    
</configuration>

2. 带有 log4j2 的多个日志文件

要使用 log4j2 实现上述日志记录配置,请在类路径中包含 log4j2 依赖项。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <exclusions>
    <exclusion>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-logging</artifactId>
    </exclusion>
  </exclusions>
</dependency>
 
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

现在在资源文件夹中添加log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
  
    <Properties>
        <Property name="LOG_PATTERN">%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %p %m%n</Property>
        <Property name="APP_LOG_ROOT">c:/temp</Property>
    </Properties>
  
    <Appenders>
  
        <Console name="console" target="SYSTEM_OUT" follow="true">
            <PatternLayout pattern="${LOG_PATTERN}"/>
        </Console>
          
        <RollingFile name="applicationLog" fileName="${sys:APP_LOG_ROOT}/application.log"
            filePattern="${sys:APP_LOG_ROOT}/application-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="19500KB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
          
        <RollingFile name="springLog" fileName="${sys:APP_LOG_ROOT}/spring-framework.log"
            filePattern="${sys:APP_LOG_ROOT}/spring-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="19500KB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
          
        <RollingFile name="aopLog" fileName="${sys:APP_LOG_ROOT}/application-aop.log"
            filePattern="${sys:APP_LOG_ROOT}/application-aop-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="19500KB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
         
        <RollingFile name="hibernateLog" fileName="${sys:APP_LOG_ROOT}/database.log"
            filePattern="${sys:APP_LOG_ROOT}/spring-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="19500KB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
          
    </Appenders>
  
    <Loggers>
      
      <Logger name="com.howtodoinjava.demo" additivity="false" level="debug">
            <AppenderRef ref="applicationLog" />
            <AppenderRef ref="console"  />
        </Logger>
         
        <Logger name="com.howtodoinjava.demo.aop" additivity="false" level="info">
            <AppenderRef ref="aopLog" />
            <AppenderRef ref="console" />
        </Logger>
          
        <Logger name="org.springframework" additivity="false" level="error">
            <AppenderRef ref="springLog" />
            <AppenderRef ref="console"/>
        </Logger>
         
        <Logger name="org.hibernate" additivity="false" level="error">
            <AppenderRef ref="hibernateLog" />
            <AppenderRef ref="console"/>
        </Logger>
                  
        <Root level="INFO">
            <AppenderRef ref="console"/>
        </Root>
  
    </Loggers>
  
</Configuration>

3. 弹簧启动多个日志文件演示

使用上述任何给定配置运行应用程序。您将看到文件夹中生成的日志文件。'c:/temp'

Spring 引导多个日志文件示例

请向我提出与使用多个文件追加器配置 Spring 引导日志记录相关的问题。

快乐学习!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/27137.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NeRF源码运行与学习(pytorch)

神经辐射场&#xff08;NeRF&#xff09;是一个简单的全连接网络&#xff08;权重约为5MB&#xff09;&#xff0c;经过训练&#xff0c;可以使用渲染损失再现单个场景的输入视图。网络直接从空间位置和观看方向&#xff08;5D输入&#xff09;映射到颜色和不透明度&#xff08…

翻译文本的软件有哪些?这几个翻译工具你可以试试看

文本翻译&#xff0c;是我们在生活中或工作中比较常见的一个需求。例如有时收到一份英文资料&#xff0c;没时间逐字翻译成中文&#xff0c;那就需要借助翻译工具来帮忙了&#xff1b;或者是有时需要将一些内容翻译成英文&#xff0c;而碰巧遇到句子不知道如何翻译&#xff0c;…

DDPM(Denoising Diffusion Probabilistic Models)扩散模型简述

引言 扩散模型最早是在2015年的Deep Unsupervised Learning using Nonequilibrium Thermodynamics文章中提出的&#xff0c;但当时扩散模型并不work&#xff0c;所以并没有被广泛应用。在2020年&#xff0c;Denoising Diffusion Probabilistic Models(简称为DDPM)的出现&#…

[附源码]java毕业设计校园闲置物品交易

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

MCE | 动物实验溶剂大讨论

在动物实验中&#xff0c;药物通常会以溶液 (Solution) 或混悬液 (Suspension) 的形式给药。我们需选择合适的溶剂&#xff0c;可以辅助超声加热措施&#xff0c;得到澄清的溶液或适合给药的混悬液。■ 人见人爱的生理盐水/PBS 对于水溶性很好的产品&#xff0c;用生理盐水 (Sa…

中学数学课程标准(教学大纲)的传承与变迁

目 录 摘 要 I Abstract II 第一章 绪论 1 1.1研究背景及意义 1 1.2研究现状 1 1.3研究内容 3 第二章 1990以来我国中学数学课程标准&#xff08;教学大纲&#xff09;改革回顾 4 2.1改革回顾 4 2.1.1 1990年数学教学改革的内容 4 2.1.2 2001年数学教学改革的内容 5 2.1.3 2011…

XSS(Cross-site Script,跨站脚本)漏洞笔记

起源 最早的 XSS 漏洞可追溯到 1999 年末&#xff0c;微软安全工程师发现一些网站遭到攻击&#xff0c;网站被插入了一些恶意脚本和图像标签。随后&#xff0c;微软对此类漏洞进行研究分析&#xff0c;并在 2000 年 1 月&#xff0c;正式使用“cross-site scripting”这个名称…

C语言-指针初阶(6)

目录 思维导图&#xff1a; 1. 指针是什么&#xff1f; 2. 指针和指针类型 2.1 指针-整数 2.2 指针的解引用 3. 野指针 3.1 野指针成因 3.2 如何规避野指针 4. 指针运算 4.1 指针-整数 4.2 指针-指针 4.3 指针的关系运算 5. 指针和数组 6. 二级指针 7. 指针数组…

50行Python代码实现自动下载小说,并打包exe直接

前言 室友喊着没有小说看&#xff0c;让我给他推荐几本&#xff0c;这能难倒我&#xff1f; 分分钟就用python给他把整个网站的小说都给下载下来了&#xff0c;不愧是我啊&#xff01; 话不多说&#xff0c;我们直接开整&#xff01; &#xff08;文末送读者福利&#xff09…

python之爬虫的学习

python爬虫入门-1为什么要学习爬虫浏览器背后的秘密常用网络请求URL解析HTTP常见响应状态码相关库及其简单使用相关引用综合栗子为什么要学习爬虫 现如今&#xff0c;浏览器可以更方便的进行网页交互以人们适合阅读的方式展示数据&#xff1b;但爬虫或者网页抓取对数据的收集和…

第5章 输入/输出(I/O)管理

5.1 I/O管理概述 5.1.1 I/O设备 I/O设备的分类&#xff08;按使用特性分类&#xff09;I/O设备的分类&#xff08;按传输速率分类&#xff09;I/O设备的分类&#xff08;按信息交换的单位分类&#xff09; 5.1.2 I/O控制方式 有4种&#xff1a; 1. 程序直接控制方式2. 中…

都是同样条件的mysql select语句,为什么读到的内容却不一样?

假设当前数据库里有下面这张表。 老规矩&#xff0c;以下内容还是默认发生在innodb引擎的可重复读隔离级别下。 大家可以看到&#xff0c;线程1&#xff0c;同样都是读 age > 3 的数据。第一次读到1条数据&#xff0c;这个是原始状态。这之后线程2将id2的age字段也改成了3。…

kubelet源码 删除pod(二)

kubelet源码 删除pod&#xff08;二&#xff09; 本文中含有k8s的一个bug&#xff0c;我也正在努力提交PR&#xff0c;不过会不会被merge就不清楚了。 kubernetes PR地址 pod_workers.go是主要处理pod变化的文件&#xff0c;在1.22版本后对这个文件进行了比较大的修改。把属…

[附源码]SSM计算机毕业设计基于SSM的酒店管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

QT 字符串操作常用接口函数

目录常见字符串处理函数空白字符串处理函数查询字符串数据字符串比较字符串的转换QT版本的STLQLinkedList和QVector的区别QT提供的STL命名风格的迭代器QMap和QHash经过该简单设置可以防止msvc环境下使用qdebug打印输出时出现中文乱码的问题。 #include "learn.h" #i…

长话短说:学习网络安全自学好还是报培训班?

无论你是大学生还是在职人员&#xff0c;想学网络安全时&#xff0c;都会面临两个选择&#xff0c;自学或者报班。报班通常太费钱&#xff0c;时间又不自由&#xff1b;自学又不知道如何下手&#xff0c;担心自己坚持不下来。怎么办&#xff1f; 我们先分析一下自学和培训班的…

【文本分类】《融合注意力和剪裁机制的通用文本分类模型》

阅读摘要&#xff1a;   针对实际场景中长短文本大量的情况&#xff0c;提出了双通道注意力机制与长文本裁剪机制来改进文本分类模型&#xff0c;最终提高了精度。 参考文献&#xff1a;   [1] 融合注意力和剪裁机制的通用文本分类模型 参考论文信息 论文名称&#xff1a;《…

第三版全球干旱指数和潜在蒸散数据发布

Robert J. Zomer &#xff1b;JianchuXu&#xff1b;AntonioTrabucco(Kunming Institute of Botany, Chinese Academy of Science&#xff1b;Euro-Mediterranean Center on Climate Change, IAFES Division, Sassari, Italy) 摘要 潜在蒸散(Potential evapotranspiration&…

Linux Shell 自动交互功能实现

1. EOF 多文本输入 需求案例 1 新交付了一批机器&#xff0c;每台机器只分配了一块落盘 &#xff0c;现在根据需求对该盘进行分区并实现挂载&#xff0c;如何实现&#xff1f; 需求分析&#xff1a; 对于一个盘&#xff0c;实现分区挂载到不同目录&#xff0c;通常思路有两…

灯具行业MES解决方案,实现产品的正反向追溯

灯具照明行业产业链主要包括上游原材料、中游照明产品生产及封装、下游照明细分应用领域。产业链上游、中游多为资本密集与技术密集型行业&#xff0c;产品高度标准化&#xff0c;市场相对集中。而产业链下游产品需求相对个性化&#xff0c;多品类、多SKU&#xff0c;市场集中度…