千家信息网

Logback配置文件怎么写

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章给大家介绍Logback配置文件怎么写,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。受台风利奇马的影响很多地方都迎来了强降雨,双休日不能出去玩一起学习吧,就先从最基本的配
千家信息网最后更新 2026年10月31日Logback配置文件怎么写

这篇文章给大家介绍Logback配置文件怎么写,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

受台风利奇马的影响很多地方都迎来了强降雨,双休日不能出去玩一起学习吧,就先从最基本的配置讲起再介绍高级特性异步输出日志。如果只想看异步输出日志提升性能的部分请将文章往下拉一点。

配置文件logback-spring.xml

SpringBoot工程自带logback和slf4j的依赖,所以重点放在编写配置文件上,需要引入什么依赖,日志依赖冲突统统都不需要我们管了。logback框架会默认加载classpath下命名为logback-spring或logback的配置文件。将所有日志都存储在一个文件中文件大小也随着应用的运行越来越大并且不好排查问题,正确的做法应该是将error日志和其他日志分开,并且不同级别的日志根据时间段进行记录存储。

                            [%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%C] [%t] [%L] [%-5p] %m%n                                        ERROR            DENY            ACCEPT                            [%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%C] [%t] [%L] [%-5p] %m%n                                                ${LOG_INFO_HOME}//%d.log            30                                    ERROR                            [%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%C] [%t] [%L] [%-5p] %m%n                                                ${LOG_ERROR_HOME}//%d.log            30                                            

部分标签说明

  • 标签,必填标签,用来指定最基础的日志输出级别

    • 标签,添加append

  • 标签,通过使用该标签指定日志的收集策略

    • name属性指定appender命名

    • class属性指定输出策略,通常有两种,控制台输出和文件输出,文件输出就是将日志进行一个持久化。ConsoleAppender将日志输出到控制台

  • 标签,通过使用该标签指定过滤策略

    • 标签指定过滤的类型

  • 标签,使用该标签下的标签指定日志输出格式

  • 标签指定收集策略,比如基于时间进行收集

    • 标签指定生成日志保存地址 通过这样配置已经实现了分类分天手机日志的目标了

logback 高级特性异步输出日志

之前的日志配置方式是基于同步的,每次日志输出到文件都会进行一次磁盘IO。采用异步写日志的方式而不让此次写日志发生磁盘IO,阻塞线程从而造成不必要的性能损耗。异步输出日志的方式很简单,添加一个基于异步写日志的appender,并指向原先配置的appender即可

                     0                256                                        0                256                    

异步输出日志性能测试

既然能提高性能的话,必须进行一次测试比对,同步和异步输出日志性能到底能提升多少倍?

服务器硬件

  • CPU 六核

  • 内存 8G

测试工具

Apache Jmeter

同步输出日志

  • 线程数:100

  • Ramp-Up Loop(可以理解为启动线程所用时间) :0 可以理解为100个线程同时启用

  • 测试结果 重点关注指标Throughput【TPS】吞吐量:系统在单位时间内处理请求的数量,在同步输出日志中TPS为44.2/sec

异步输出日志

  • 线程数 100

  • Ramp-Up Loop:0

  • 测试结果 TPS为497.5/sec,性能提升了10多倍!!!

异步日志输出原理

从logback框架下的Logger.info方法开始追踪。一路的方法调用路径如下图所示:

异步输出日志中最关键的就是配置文件中ch.qos.logback.classic包下AsyncAppenderBase类中的append方法,查看该方法的源码:

protected void append(E eventObject) {        if(!this.isQueueBelowDiscardingThreshold() || !this.isDiscardable(eventObject)) {            this.preprocess(eventObject);            this.put(eventObject);        }    }

通过队列情况判断是否需要丢弃日志,不丢弃的话将它放到阻塞队列中,通过查看代码,这个阻塞队列为ArrayBlockingQueueu,默认大小为256,可以通过配置文件进行修改。Logger.info(...)到append(...)就结束了,只做了将日志塞入到阻塞队列的事,然后继续执行Logger.info(...)下面的语句了。 在AsyncAppenderBase类中定义了一个Worker线程,run方法中的关键部分代码如下:

E e = parent.blockingQueue.take();aai.appendLoopOnAppenders(e);

从阻塞队列中取出一个日志,并调用AppenderAttachableImpl类中的appendLoopOnAppenders方法维护一个Append列表。Worker线程中调用方法过程主要如下图:

最主要的两个方法就是encode和write方法,前一个法方会根据配置文件中encode指定的方式转化为字节码,后一个方法将转化成的字节码写入到文件中去。所以写文件是通过新起一个线程去完成的,主线程将日志扔到阻塞队列中,然后又去做其他事情了。

关于Logback配置文件怎么写就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

日志 输出 文件 标签 配置 方法 线程 性能 阻塞 队列 测试 方式 时间 策略 同步 就是 部分 高级 代码 关键 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中资互联网科技 平安科技 互联网 互联网 的科技创新 兼蜜互联网科技 上游互联网科技 深圳卡尔迅互联网科技有限公司怎么样 山东吉时兔互联网科技有限公司 哈尔滨新华互联网科技学院 贵州叶脉互联网科技有限公司所属行业 上海宁丞科技互联网 世界互联网科技公司市值排名 阿大互联网科技有限公司 上海科技产业互联网平台 半导体是互联网高科技吗 济南小医互联网科技有限公司招聘 互联网公司属于科技吗 长沙渺峰互联网科技有限公司 米泉互联网科技专业怎么样 承德科技产业互联网平台 山东亿川互联网科技有限责任公司 广东猪兼强互联网科技有限公司 哈尔滨大商圈互联网科技有限公司 互联网通讯科技 隆华科技工业互联网 互联网科技扶贫时间 长沙互联网科技 锡山区互联网智能科技产品供应 智帮互联网科技公司最近动向 富国互联网金融科技混合基金 互联网科技创业有什么好项目
0