Logback实现按业务输出到对应日志文件

一、方案

由于需要按业务生成不同的日志文件,看到按业务来区分,我的第一感觉就是业务其实是可以按包名来区分的。所以其实我们只要实现不同的包下面的日志输出到不同的文件,就能实现需求了。由于本人以前玩过log4j2,要实现这个还是不难的,所以马上就有思路了。

具体的实现思路如下:

(1)自定义一个输出到文件的appender(理解为日志输出器)

(2)配置logger,logger的name为需要单独生成文件的那个包的全包名,然后在里面引用上面定义的appender

二、具体实现

(1)准备阶段

由于项目采用SpringBoot框架,而且使用的是默认日志框架logback。看了下官网,只需要在resources下面定义一个logback-spring.xml的XML文件就能覆盖默认的logback配置。

由于SpringBoot默认的日志配置还是挺不错的,因此想把默认的配置保留下来。通过查看springboot的jar包才找到默认的logback的xml配置。

它的位置为spring-boot-2.1.0.RELEASE.jar!\org\springframework\boot\logging\logback\base.xml,这个默认xml中有如下配置:

定义了2个appender,分别为输出到控制台的appender和输出到文件的appender
 "ztripLogAppender"
            class="ch.qos.logback.core.rolling.RollingFileAppender">
    ${LOG_DIR}/ztrip.log
    <rollingPolicy
            class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      ${LOG_DIR}/ztrip.%d{yyyy-MM-dd}.log.bak
      

    
      ${COMMON_LOG_PATTERN}
    
  
"CONSOLE" class="ch.qos.logback.core.ConsoleAppender">

        ${COMMON_LOG_PATTERN}

      UTF-8
默认日志级别为info,默认引用了上面定义的这个2个appender
"ztripLog" additivity="false" level="INFO">
    ref ref="ztripLogAppender"/>
    ref ref="CONSOLE"/>

(2)代码引用(2种方式)

1.通过lombok提供的注解,指定上面配置好的logger name
@Slf4j(topic = "ztripLog")
2.通过 LoggerFactory 去创建
private final static Logger ztripLogger = LoggerFactory.getLogger(ZtripConstants.ZTRIP_LOG_NAME);

(3)效果如下

三、最后

(1)需要考虑到你的线上代码已经运行了一段时间,那么改动日志尽量不要去动原来的,最好新增一个配置;因为你不清楚之前的开发到底是不是还有其他逻辑在上面,盲目的改动有风险

(2)通过不同业务的日志分离,既能解耦也能加快排查问题的速度,避免在大日志文件海选

感谢下面的文章给的思路,参考链接:

https://www.cnblogs.com/zeng1994/p/f9bff238b13a0bf8fb8bf88c41db7a34.html

Original: https://www.cnblogs.com/zdd-java/p/15638198.html
Author: 达兔哥
Title: Logback实现按业务输出到对应日志文件

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/576116/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • String类常用的API

    String类常用API总结及注意事项 String类常用的API 字符串内容的比较: 注意: 不能使用 == 去比较两个字符串的内容。原理:比较的是字符串的地址。(如果两个字符串…

    数据库 2023年6月16日
    097
  • MySQL InnoDB索引原理

    数据库与I/O原理 数据会持久化到磁盘,查询数据是就会有I/O操作,相对于缓存操作,I/O操作的时间成本相当高昂。 I/O操作的基本单位是一个磁盘页面,比如16KB的页面大小。当数…

    数据库 2023年5月24日
    078
  • DB审核查询平台Archery–安装部署可能遇到的问题

    Archery是archer的分支项目,定位于SQL审核查询平台,旨在提升DBA的工作效率,支持多数据库的SQL上线和查询,同时支持丰富的MySQL运维功能,所有功能都兼容手机端操…

    数据库 2023年6月16日
    077
  • Redis-数据结构

    Redis key-value结构组织 首先,Redis使用了一个全局哈希表来保存所有的键值对。这个全局哈希表,也就是一个存放哈希桶(entry)的数组。Redis可以用哈希算法算…

    数据库 2023年6月11日
    072
  • [spring]spring注解开发

    8.使用注解开发 1.bean spring4以后,注解依赖于aop包,确保你的lib中有它 确保开启了使用注解 2.组件代替bean实现自动注入 在配置文件中自动扫描包下的所有类…

    数据库 2023年6月16日
    075
  • leetcode 617. Merge Two Binary Trees 合并二叉树(简单)

    一、题目大意 给你两棵二叉树: root1 和 root2 。 想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新…

    数据库 2023年6月16日
    065
  • Maven进行clean时报错,解决方法

    Q1:由于网络原因,maven仓库中产生了后缀LastUpdated文件,再次clean直接报错 参考方法:https://www.cnblogs.com/DDgougou/p/1…

    数据库 2023年6月9日
    0102
  • SQL Server中STATISTICS IO物理读和逻辑读的误区

    SQL Server中STATISTICS IO物理读和逻辑读的误区 大家知道,SQL Server中可以利用下面命令查看某个语句读写IO的情况 SET STATISTICS IO…

    数据库 2023年6月9日
    070
  • SQL与数据库编程学习笔记-day2

    SQL与数据库编程学习笔记-day2 修改数据库密码; – 登出数据库(修改数据库密码必须在数据库外执行命令); * – Ps:登出命令:quit* 操作完…

    数据库 2023年5月24日
    057
  • 强大博客搭建全过程(1)-hexo博客搭建保姆级教程

    1、 前言 本人本来使用国内的开源项目solo搭建了博客,但感觉1核CPU2G内存的服务器,还是稍微有点重,包括服务器内还搭建了数据库。如果自己开发然后搭建,耗费时间又比较多,于是…

    数据库 2023年6月16日
    097
  • 23种设计模式之策略模式

    文章目录 概览 策略模式的优缺点 策略模式的应用场景 策略模式的结构与实现 * 模式的结构 模式的实现 策略模式的扩展 总结 ; 概览 策略模式定义了一系列算法,并将每个算法封装起…

    数据库 2023年6月6日
    0112
  • mysql连接

    private static String URL="jdbc:mysql://localhost:3306/mysql?serverTimezone=GMT"…

    数据库 2023年6月9日
    093
  • 手写spring的ioc的流程截图(笔记-1)

    spring ioc是什么? IoC 容器是 Spring 的核心,也可以称为 Spring 容器。Spring 通过 IoC 容器来管理对象的实例化和初始化,以及对象从创建到销毁…

    数据库 2023年6月6日
    064
  • Mybatis-Plus 实现乐观锁

    是指在读取一行数据时,记下它的版本号、最近修改的时间戳或校验和。然后,你可以在修改记录之前检查版本有没有发生变化。 适用场景 适用于读多写少的场景,乐观锁相信事务之间的数据竞争概率…

    数据库 2023年6月6日
    077
  • Word书签替换,加盖电子印章及转换PDF(Java实用版)

    一、前言 在项目中有需要对word进行操作的,可以看看哈,本次使用比较强大的spire组件来对word进行操作,免费版支持三页哦,对于不止三页的word文件,可以购买收费版,官网:…

    数据库 2023年6月16日
    079
  • MVCC多版本并发控制的理解

    前置知识 当前读与快照读 当前读什么是当前读:读取的是 &#x6700;&#x65B0;的数据,不会读到老数据。 &#x4F55;&#x65F6;&…

    数据库 2023年6月14日
    067
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球