springboot 接入 logback.xml 彻底搞出一个超级完整加注释的版本-可在生产环境直接使用

news2024/9/20 19:57:53

目录

介绍 

开搞 先logback.xml相关的

pom.xml 

application.yml 配置 

启动配置

类中编写 引入 @Slf4j

logback.xml 重点介绍 

 logback项目名称

 最大保存时间 365天

lOGGER  PATTERN 根据个人喜好选择匹配 

 控制台输出 

滚动文件

    过滤器 可以选择自己要的日志级别 不选直接全部我靠 detail 最爱啊     

    文件输出目录  

    定期打包一天安排一个小可爱      

      这玩意就更牛掰了,直接异步输出爽翻天

这玩意就是输出了,配置异步的时候,这东西直接配置进去完事搞定就很方便    

logback.xml 文件配置 完整版

效果


我的相关博客

java 日志 logback-spring.xml 文件配置_宇神城主_蒋浩宇的博客-CSDN博客

spring boot log 日志配置_宇神城主_蒋浩宇的博客-CSDN博客_springboot log

介绍 

每天生成压缩文件记录数据

保存一年

异步写入数据

linux直接就到目录位置,windwos 一般自动到d盘不用单独设置

 

 

开搞 先logback.xml相关的

pom.xml 


 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- test-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>
 <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
            <scope>compile</scope>
        </dependency>
		
	 <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>	
		

application.yml 配置 

# 日志相关配置
logging:
  config:
    classpath: logback-spring.xml
  level:
    root: debug
    org.jd.automaton.util.config: debug

启动配置


这玩意启动的时候也可以安排 --logging.config.level=info 随便配置



类中编写 引入 @Slf4j


import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;

@Component
@Slf4j
public class Init {
    /***
     * 
     * 初始化方法
     */
    @PostConstruct
    public void run(){
		String info = "success";
        log.info("初始化执行 :{} ",info);

    }
}

logback.xml 重点介绍 


 logback项目名称



    <property name="appName" value="super-app"/>



 最大保存时间 365天
 



    <property name="maxHistory" value="365"/>



lOGGER  PATTERN 根据个人喜好选择匹配
 



  <property name="logPattern" value="%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{traceId} - %m%n"/>


 控制台输出 



  ch.qos.logback.core.ConsoleAppender


滚动文件



 ch.qos.logback.core.rolling.RollingFileAppender 


    
过滤器 可以选择自己要的日志级别 不选直接全部我靠 detail 最爱啊 
    



<filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>



    
文件输出目录
  




 <file>${logPath}/${appName}/${appName}_debug.log</file>



    
定期打包一天安排一个小可爱
      



  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logPath}/${appName}/debug/${appName}_debug.log.%d{yyyy-MM-dd}.zip
            </fileNamePattern>
            <maxHistory>${maxHistory}</maxHistory>
        </rollingPolicy>



    
 
这玩意就更牛掰了,直接异步输出爽翻天


  ch.qos.logback.classic.AsyncAppender



这玩意就是输出了,配置异步的时候,这东西直接配置进去完事搞定就很方便
    


<appender-ref ref="STDOUT"/>


    

logback.xml 文件配置 完整版


	
	
	
	
<?xml version="1.0" encoding="UTF-8"?>
<!-- 分级别异步文件日志输出配置 -->
<!-- 级别从高到低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL -->
<!-- 日志输出规则 根据当前ROOT 级别,日志输出时,级别高于root默认的级别时 会输出 -->
<!-- 以下 每个配置的 filter 是过滤掉输出文件里面,会出现高级别文件,依然出现低级别的日志信息,通过filter 过滤只记录本级别的日志 -->
<!-- scan 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 -->
<!-- scanPeriod 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">

    <!-- logback项目名称 -->
    <property name="appName" value="super-app"/>

    <!-- 日志级别 DEBUG INFO WARN ERROR -->
    <property name="logLevel" value="DEBUG"/>

    <!-- 日志路径-->
    <property name="logPath" value="/export/log"/>

    <!-- 最大保存时间 365天-->
    <property name="maxHistory" value="365"/>

    <!-- 异步缓冲队列的深度,该值会影响性能.默认值为256 -->
    <property name="queueSize" value="256"/>

    <!-- lOGGER  PATTERN 根据个人喜好选择匹配  -->
    <property name="logPattern" value="%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{traceId} - %m%n"/>


    <!-- 动态日志级别 -->
    <jmxConfigurator/>

    <!-- 控制台的标准输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <charset>UTF-8</charset>
            <pattern>${logPattern}</pattern>
        </encoder>
    </appender>

    <appender name="consoleDetail" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logPath}/${appName}/${appName}_detail.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logPath}/${appName}/detail/${appName}_detail.log.%d{yyyy-MM-dd}.zip</fileNamePattern>
            <maxHistory>${maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${logPattern}</pattern>
        </encoder>
    </appender>

    <!-- DUBUG 日志记录  -->
    <appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <file>${logPath}/${appName}/${appName}_debug.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logPath}/${appName}/debug/${appName}_debug.log.%d{yyyy-MM-dd}.zip
            </fileNamePattern>
            <maxHistory>${maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${logPattern}</pattern>
        </encoder>
    </appender>

    <!-- INFO 级别的日志记录  -->
    <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <file>${logPath}/${appName}/${appName}_info.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logPath}/${appName}/info/${appName}_info.log.%d{yyyy-MM-dd}.zip
            </fileNamePattern>
            <maxHistory>${maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${logPattern}</pattern>
        </encoder>
    </appender>

    <!--  WARN 级别的日志记录 -->
    <appender name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <file>${logPath}/${appName}/${appName}_warn.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logPath}/${appName}/warn/${appName}_warn.log.%d{yyyy-MM-dd}.zip
            </fileNamePattern>
            <maxHistory>${maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${logPattern}</pattern>
        </encoder>
    </appender>

    <!-- Error 级别的日志记录 -->
    <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <file>${logPath}/${appName}/${appName}_error.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logPath}/${appName}/error/${appName}_error.log.%d{yyyy-MM-dd}.zip
            </fileNamePattern>
            <maxHistory>${maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${logPattern}</pattern>
        </encoder>
    </appender>

    <appender name="ASYNC_consoleDetail" class="ch.qos.logback.classic.AsyncAppender">
        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
        <discardingThreshold>0</discardingThreshold>
        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
        <queueSize>${queueSize}</queueSize>
        <appender-ref ref="consoleDetail"/>
    </appender>

    <!-- ASYNC_LOG_DEBUG  -->
    <appender name="ASYNC_LOG_DEBUG" class="ch.qos.logback.classic.AsyncAppender">
        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
        <discardingThreshold>0</discardingThreshold>
        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
        <queueSize>${queueSize}</queueSize>
        <appender-ref ref="FILE_DEBUG"/>
    </appender>

    <!-- ASYNC_LOG_INFO -->
    <appender name="ASYNC_LOG_INFO" class="ch.qos.logback.classic.AsyncAppender">
        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
        <discardingThreshold>0</discardingThreshold>
        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
        <queueSize>${queueSize}</queueSize>
        <appender-ref ref="FILE_INFO"/>
    </appender>

    <!-- ASYNC_LOG_WARN -->
    <appender name="ASYNC_LOG_WARN" class="ch.qos.logback.classic.AsyncAppender">
        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
        <discardingThreshold>0</discardingThreshold>
        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
        <queueSize>${queueSize}</queueSize>
        <appender-ref ref="FILE_WARN"/>
    </appender>

    <!--ASYNC_LOG_ERROR  -->
    <appender name="ASYNC_LOG_ERROR" class="ch.qos.logback.classic.AsyncAppender">
        <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
        <discardingThreshold>0</discardingThreshold>
        <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
        <queueSize>${queueSize}</queueSize>
        <appender-ref ref="FILE_ERROR"/>
    </appender>

    <!-- 日志的记录级别 -->
    <!-- 在定义后引用APPENDER -->
    <root level="${logLevel}">
        <!--  控制台  -->
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="ASYNC_consoleDetail"/>

        <!-- 具体的日志级别和文件的配置 -->
        <appender-ref ref="ASYNC_LOG_DEBUG"/>
        <appender-ref ref="ASYNC_LOG_INFO"/>
        <appender-ref ref="ASYNC_LOG_WARN"/>
        <appender-ref ref="ASYNC_LOG_ERROR"/>
    </root>
</configuration>



效果

每天生成新的zip文件保存昨天日志

每天新文件答应到当前内容中

ok  先些喽 持续更新 有兴趣溜赞搞起来 

转发著名出处哟 持续更新好看最新内容  

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

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

相关文章

【机器学习数据集制作】视频转图片(代码注释,思路推导)

目录数据集效果资源下载实现思路代码实战总结『机器学习』分享机器学习0基础的数据集制作过程。 欢迎关注 『机器学习』 系列&#xff0c;持续更新中 欢迎关注 『机器学习』 系列&#xff0c;持续更新中 数据集效果 资源下载 拿来即用&#xff0c;所见即所得。 项目仓库&#…

​LabVIEW从另一个VI或通过VI服务器访问正在运行的可执行文件

​LabVIEW从另一个VI或通过VI服务器访问正在运行的可执行文件 有没有办法从另一个VI或可执行文件访问正在运行的LabVIEW可执行文件。例如&#xff0c;从显示控件获取值&#xff0c;为控件设置值&#xff0c;以及初始化运行LabVIEW可执行文件VI的前面板。 在正在运行的可执行文…

IOS逆向初探

前言 这些文章用于记录学习路上的点点滴滴&#xff0c;也希望能给到刚入门的小伙伴们一点帮助。爱而所向&#xff0c;不负所心。 环境 iphone 6 MacOS Monterey 12.3.1 一、IOS开发语言 Objective-C Objective-C是iOS操作系统运用的软件开发语言。Objective-C的流行完全是因…

免费下载word简历模板的网站

我这里分享了6个免费简历网站&#xff0c;分享给各位。 1.OfficePlus 微软官方出品的 office 免费模板网站https://www.officeplus.cn/ 2&#xff0e;简历设计网 2000Word模板免费下载&#xff0c;每个用于每天可下载10篇免费模板。https://www.jianlisheji.com/ 3.办公资源…

mysql 一对多查询 合并为一行数据

用户包含多个角色 执行&#xff1a; SELECT ur.user_id,u.name user_name,u.mail,ur.role_id,r.name role_name FROM tb_user_role ur LEFT JOIN tb_user u ON u.idur.user_id LEFT JOIN tb_role r ON r.idur.role_id WHERE u.is_delete0 ORDER BY …

华为大数据HCIA题目1

1. HDFS 不适用于以下哪些场景&#xff1f;[多选题] A.流式数据访问 B.大量小文件存储 C.大文件存储与访问 D.随机写入 &#xff08;BD&#xff09; 2. ZKFC 进程部署在 hdfs 中的以下那个节点上&#xff1f;[多选题] A.active namenode B.standby namenode C.datanod…

重塑运维系统,跨越烟囱式建设的陷阱

企业运维系统建设经过多年演变&#xff0c;从以商业软件为主&#xff0c;到开源软件的百花齐放&#xff0c;极大的降低了成本&#xff0c;但是在建设过程中&#xff0c;却非常容易落入到烟囱式建设的陷阱&#xff0c;因此如何跨越它&#xff0c;成为了众多企业面临的难题。 今…

Deepin Linux系统怎安装打印机? 兄弟1618w打印机驱动安装图文教程

Deepin系统作为国产的一款电脑操作系统&#xff0c;拥有极为非常美观的UI界面。很多不熟悉该操作系统的朋友都不知道该怎么安装打印机驱动&#xff0c;今天我们就以兄弟1618w打印机为例&#xff0c;分享驱动下载&#xff0c;安装&#xff0c;调试的过程。 电脑环境和打印机型号…

Design Compiler工具学习笔记(5)

目录 引言 知识储备 代码风格 DFT 实际操作 引言 本篇继续学习 DC的基本使用。本篇主要学习 DC 工作机理和工作过程 以及简单介绍 DFT。 前文链接&#xff1a; Design Compiler工具学习笔记&#xff08;1&#xff09; Design Compiler工具学习笔记&#xff08;2&#…

动态规划算法学习四:最大上升子序列问题(LIS:Longest Increasing Subsequence)

文章目录前言一、问题描述二、DP步骤1、最优子结构a、限界上升子序列b、最优子结构性质2、状态表示和递推方程3、计算最优值4、算法实现三、优化&#xff1a;非DP /二分法1、新问题2、算法实现前言 一、问题描述 二、DP步骤 1、最优子结构 给定序列&#x1d446;[&#x1d4…

“300万”只是新起点,比亚迪将开启下一个 “黄金周期”

比亚迪再次创造全球新能源汽车市场新标杆。 11月16日&#xff0c;比亚迪第300万辆新能源汽车正式下线。成为首个达成这一里程碑的中国品牌。 正如比亚迪股份有限公司董事长兼总裁王传福说&#xff0c;从“第1辆新能源汽车到第100万辆新能源汽车”用时13年、从“100万辆到200万…

MCE | 磁珠 Protocol,如何快速捕获您心仪的蛋白~

磁珠的优势 ◎ 蛋白荷载量高 ◎ 特异性强、非特异性结合性低 ◎ 样品损失小 ◎ 操作方便 如何操作 ■ 磁珠预处理 将磁珠充分混悬&#xff0c;取 25-50 μL 磁珠&#xff0c;置于 1.5 mL EP 管中&#xff0c;加入 400 μL 结合/洗涤缓冲液&#xff0c;充分混悬&#xff0c;置…

Word处理控件Aspose.Words功能演示:使用 Java 将文本转换为 PDF

TXT格式的文本文档包含行形式的纯文本。TXT 文件是存储没有任何格式的纯文本的最简单和最简单的方法。我们可以在任何文本编辑器或文字处理应用程序中轻松创建、打开和编辑 TXT 文件。在某些情况下&#xff0c;我们可能需要将文本转换为只读格式&#xff0c;例如PDF。在本文中&…

flutter 怎么消除按钮事件的点击溅射背景

flutter 怎么消除按钮事件的点击溅射背景前言一、设置 ThemeData二、Theme 设置三、单独设置总结前言 在flutter 中&#xff0c;大部分事件组件都有一个溅射背影&#xff0c;但是假如某天需求让我们取消点击溅射效果&#xff0c;我们该怎么办呢&#xff1f;本篇文章将记录怎么…

画法几何及机械制图复习题及答案

机 械 制 图复习题及参考答案 一、填空题 1&#xff0e;比例的种类有 、 、 。 2&#xff0e;图样中的可见轮廓线用 绘制&#xff1b;图样中尺寸线和尺寸界线用 绘制。 3&#xff0e;正投影的基本性质包括 、 、 。 4&#xff0e;三视图的投影关系表现为&#xff1a;主、俯…

【ML特征工程】第 1 章 :机器学习管道

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

数字逻辑·时序线路分析【常见的时序线路】

这一篇和之前那一篇讲的是时序线路 之前学过的是组合线路 寄存器 有3个D触发器控制 C1 − C3 用来寄存二进制代码。 下面的与或非门用来接收要寄存的二进制代码。 上面的与非门用来发送寄存的二进制代码。 输入信号&#xff1a; RD&#xff1a;清除信号。 WAC&#xff1a;直送…

spring-cloud-dubbo基本使用

创建模块 api模块使用mave quick-start 构建: &#xff0c;provider模块使用 下面方式创建&#xff1a; 点击下一步&#xff0c;会看到一些基于阿里的cloud的依赖&#xff1a; 上面这个是基于阿里云的&#xff0c;下面的Spring Cloud Alibaba是开源的组件依赖&#xff1a; …

torch.as_tensor()、torch.Tensor() 、 torch.tensor() 、transforms.ToTensor()的区别

1&#xff09;torch.as_tensor(data, dtypeNone,deviceNone)->Tensor : 为data生成tensor&#xff0c;保留 autograd 历史记录并尽量避免复制&#xff08;dtype和devices相同&#xff0c;尽量浅拷贝&#xff09;。 如果data已经是tensor&#xff0c;且dtype和device与参数相…

基于复杂环境下的雷达目标检测技术(Matlab代码实现)

&#x1f352;&#x1f352;&#x1f352;欢迎关注&#x1f308;&#x1f308;&#x1f308; &#x1f4dd;个人主页&#xff1a;我爱Matlab &#x1f44d;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff09;&#x1f33b;&#x1f33b;&#x1f33b; &#x1f34c;希…