在Java开发中,使用Logback进行异步日志记录是一种常见的做法。然而,有时会遇到“Java Logback异步线程日志不打印”的问题。这不仅会影响到开发调试过程中的信息捕捉,还可能导致生产环境中的关键日志数据丢失。很多开发者在使用Logback时,突然发现日志几乎没有输出,尤其是在多线程环境下,这个问题的排查显得尤为重要。以下是解决这一问题的系统性记录。
### 背景定位
在某个项目中,            
                
         
            
            
            
            一、为什么使用异步日志Why为提高程序性能,尽量默认都使用异步日志,如果不使用,可能日志在打包的时候,会占用大量磁盘IO和CPU,导致程序性能下降 二、依赖<dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</a            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-03 10:35:06
                            
                                1321阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、什么是Logback?Logback是Log4j项目的继承者,由Log4j创始人Ceki Gülcü基于过去十年企业级日志系统设计经验打造。Logback比目前所有已存的日志系统要快,它提供了其它日志系统缺失的独特和有用的特性。二、Logback架构Logback分为3个模块:logback-core、logback-classic和logback-access。core模块为其它两个模块奠定            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-11 19:31:21
                            
                                109阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、日志分析理解GC日志是处理Java虚拟机内存问题的基本技能,下面我们具体来看看。通过在java命令种加入参数来指定对应的gc类型,打印gc日志信息并输出至文件等策略。1、编写java代码public class ReferenceCountingGC {
public Object instance = null;
private static final int ONE_MB = 1024            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-19 17:40:16
                            
                                133阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # Java Logback 不打印日志的原因及解决方案
在Java开发中,日志记录是一个至关重要的功能,能够帮助开发者快速定位问题并进行调试。Logback是一个流行的日志框架,广泛应用于Spring等项目中。然而,有时你可能会遇到Logback不打印日志的情况。这篇文章将探讨导致这一问题的几个常见原因,并提供相应的解决方案。
## Logback简介
Logback是由Log4j的创始人            
                
         
            
            
            
            1.背景在后端服务开发框架搭建时,通常需要在日志模块进行统一封装,方便日志统一规范输出、后期接入类似ELK日志分析框架、以及开发过程中的日志打印;springboot默认整合好了logback,我们只需要添加lombok依赖,可以帮助我们通过注解的形式调用到日志的api(更加方便);同时配置日志输出规范及清理策略和分支差异打印就可满足我们日常开发需要了。2.集成与配置集成lombok(注解方式打印            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-17 20:48:38
                            
                                755阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            logback 配置详解(一)<configuration> and <logger>  一:根节点<configuration>包含的属性:   scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-20 23:19:18
                            
                                108阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1:logback介绍logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch它当前分为下面下个模块: logback-core:其它两个模块的基础模块 logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging logback-            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-01 19:19:01
                            
                                371阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1、基本介绍默认情况下,Spring Boot项目就会用Logback来记录日志,并用INFO级别输出到控制台。如下图: 实际开发中我们不需要直接添加logback日志依赖。 你会发现 spring-boot-starter 其中包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 logback。日志级别从低到高分为:TRACE            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-05 14:10:03
                            
                                1344阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            熟知日志级别由低到高分为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL1: 在spring boot 的 resources目录下面创建logback-spring.xml文件,内容如下,(其中我们可以配置下其中日志文件的路径,还有不同dev,test,pro环境下的日志打印级别)注意一点,就是配置了这个文件之后,在application.properties中就不能在配            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-21 01:24:10
                            
                                1292阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # 在Logback中配置MySQL日志记录
Logback是一个功能强大的Java日志记录框架,广泛应用于各种Java应用程序中。在一些情况下,开发人员可能会遇到“Logback MySQL不打印日志”的问题。本文将探讨如何配置Logback,以便将日志记录到MySQL数据库中,并解决相关问题。我们会通过示例代码和解释来帮助您理解如何实现这一点。
## Logback配置文件
首先,你需要            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-09-14 03:50:18
                            
                                100阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            高并发接口调用时,一个接口的日志会被分散打印,为了快速查找一个接口打印的日志,在日志输出时实现唯一的ID检索实现思路通过实现拦截器HandlerInterceptor接口 使用UUID生成唯一编号threadId 在控制器controller方法之前,使用MDC(log4j上下问对象)存储唯一编号threadId 在控制器controller方法处理完之后,将MDC对象中的threadId移除 s            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-20 09:38:36
                            
                                483阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            最近碰到一个问题:客户的服务器程序偶尔出现请求响应过慢的情况,通过查看日志发现RSA验证签名的代码执行超过20秒,而正常情况下只需要16毫秒。RSA证书是服务器启动就加载好的,不存在读文件慢的问题。看了一下那几行代码,最有嫌疑的就是logback日志打印的代码了。查看了生产日志配置,logback.xml里配置为,每月生成一个文件夹,当月的日志文件都在同一文件夹下,比如201901文件夹下是201            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-19 20:48:12
                            
                                335阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            解决logback无法生成第二天日志的问题之前有写过一篇springboot 配置logback日志,但是存在一个bug,无法生成第二天的日志,解决方案如下:原代码如下: <!-- ERROR级别日志 -->
    <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 RollingFileAppender -->
    <app            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-12 19:15:13
                            
                                294阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            题目描述:  模拟一个场景:处理16条日志记录,每条日志记录打印时间需要1秒,正常情况下如果将这16条记录去部打完需要16秒,现在为了提高效率,准备开启4个线程去打印,4秒钟打印完,实现这个demo。先来分析一下这个题目,关于这16条日志记录,我们可以在主线程中产生出来,这没用什么难度,关键是开启4个线程去执行,现在有两种思路:一种是日志的产生和打印日志的线程在逻辑上分开;一种            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-04 15:05:36
                            
                                377阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            背景生产环境,运营系统发现很慢,打开一个页面要好几秒,怎么知道耗时好几秒?浏览器的调试模式可以看到,而且可以看到是哪个请求耗时好几秒。具体原因是打印日志太多,导致耗时太久。是什么日志呢?查组织机构的数据,总共100万字。本质原因是因为没有异步打印,是同步打印,然后日志太多,导致好久太久。之前也配置了异步打印,但是配置的有点问题。那怎么实现异步打印日志?首先第一步,怎么使用?按下面的方式,通过日志名            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-01-28 21:14:22
                            
                                1427阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            问题描述:下图中JProfiler可看出logback的日志输出占了64%的cpu消耗优化方案:  先禁掉控制台输出,生产环境也不需要控制台输出,写日志文件即可。 
   
   配置中去掉控制台输出 
   
   <rootlevel="INFO"> 
 
 
 
   <!--<appender-ref ref="STDOUT"/>-->            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-17 11:43:06
                            
                                242阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            文章目录1、配置文件logback-spring.xml2、logback 高级特性:异步输出日志3、同步、异步输出日志,性能对比测试3.1、200个线程跑10分钟。3.2、服务接口代码(包含远程调用)3.3、结果对比4、异步日志输出原理5、对比测试工程源码 1、配置文件logback-spring.xmlSpring Boot工程自带logback和slf4j的依赖,我们使用的时候重点只需放在            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-20 12:10:45
                            
                                666阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            日志spring boot只依赖 commons            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-06-28 14:16:28
                            
                                2376阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # Spring Boot Logback日志不打印的实现
在开发过程中,日志记录是一个非常重要的环节。然而,在某些情况下,我们可能希望临时关闭日志打印以提高性能或减少日志文件的大小。今天我们将学习如何在Spring Boot项目中配置Logback,以实现不打印日志的功能。
## 流程概述
下表展示了实现“Spring Boot Logback日志不打印”的步骤:
| 步骤            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-08-23 08:16:26
                            
                                457阅读