首页 > 其他分享 >Log4j疯狂写日志问题排查

Log4j疯狂写日志问题排查

时间:2023-08-14 16:44:08浏览次数:32  
标签:配置文件 包内 jar log4j 排查 磁盘 日志 Log4j

一、问题是怎么发现的

最近有个 Java 系统上线后不久就收到了磁盘使用率告警,磁盘使用率已经超过了 90% 以上,并且磁盘使用率还在不停增长。

二、问题带来的影响

由于服务器磁盘被打满,导致了系统正常的业务日志无法继续打印,严重影响了系统的可靠性。

三、排查问题的详细过程

刚开始收到磁盘告警的时候,怀疑是日志级别问题,业务日志输出过多导致磁盘打满。但是查看我们自己的业务日志文件目录,每个日志文件内容都不是很大。

于是通过堡垒机登陆问题服务器,查看磁盘使用率很高的目录列表,发现根目录有个很大的日志文件,日志文件名称为 log4j.log。但是检查应用日志配置后,日志输出配置路径并没有配置这个日志路径。而且我们用的是 logback 日志组件和配置文件,并没有使用 log4j 来输出日志。于是便打开这个未知来源的日志文件内容,记录的日志内容确实是我们自己的 java 系统写入的日志内容,且大部分都是 debug 级别日志内容。于是猜测在系统依赖的 jar 包内也有一个 log4j 的日志配置文件。于是便把部署包下载下来,然后通过文档遍历扫描所有 jar 包内的日志配置文件,结果在一个第三方 jar 包内找到一个 log4j.xml 配置文件,里边配置的 root 日志级别为 debug,日志输出目录是系统根目录,日志文件名也都可以对应的上。

四、如何解决问题

通过上述排查过程找到了第三方 jar 包内的 log4j 配置文件,于是便排查该 jar 包的来源,发现是被其他 jar 包传递依赖进来的,并不是我们真实需要的 jar 包,所以通过 maven 排除该问题 jar 包即可。

五、总结反思

1. 以后在引入第三方 jar 包的时候一定要检查他的依赖范围,看是否会与现有系统的 jar 包有冲突或者带来其他的影响。

2. 对外提供第三方 jar 包的时候,不要把自己的调试代码和日志配置测试文件也打入 jar 包内。

作者:京东零售 曹志飞

来源:京东云开发者社区

标签:配置文件,包内,jar,log4j,排查,磁盘,日志,Log4j
From: https://www.cnblogs.com/jingdongkeji/p/17629102.html

相关文章

  • mybatis中的日志
    日志工厂如果一个数据库操作,出现了异常,我们需要排错。日志就是最好的助手!曾经:sout、debug现在:日志工厂!在Mybatis中具体使用那个日志实现,在设置中设定!STDOUT_LOGGING标准日志输出在mybatis核心配置文件中,配置我们的日志!<settings><settingname="logImpl......
  • git 添加目录失败问题排查
      拷贝了一个已有项目到新项目目录后,发现有一个子目录无法添加到git管理中。这个子目录的特点是,曾经包含.git目录,然后被我手动删除。但是这个目录再也无法添加到git管理中,而且用gitstatus也无法显示其状态。查看已被排除的文件及目录gitstatus--ignored并没......
  • nohup定时日志分割每天生成一个日志文件
    使用nohup启动java后台程序时,默认生成的日志文件保存在nohup.out中,随着时间的推移日志文件会越来越大,非常不方便查。所以如果一天生成一个日志文件,则每个日志文件户小很多,方便打开查看。下边介绍如何定时每天生成一个日志文件1、创建shell脚本首先创建一个log.sh的shell脚本,内容......
  • Log4j疯狂写日志问题排查 | 京东云技术团队
    一、问题是怎么发现的最近有个Java系统上线后不久就收到了磁盘使用率告警,磁盘使用率已经超过了90%以上,并且磁盘使用率还在不停增长。二、问题带来的影响由于服务器磁盘被打满,导致了系统正常的业务日志无法继续打印,严重影响了系统的可靠性。三、排查问题的详细过程刚开始收到磁盘告......
  • 问题排查Hive本地计算模式失败
    问题排查Hive本地计算模式失败查看hive.log后发现是javaspaceheap,也就是java内存溢出。解决方案:配置yarn集群的资源分配。由于是本地计算,因此container一定是申请在本地的,限制AM申请container容器资源的大小很重要。机器节点的资源可用通过配置NodeManager,所以第一步是......
  • 问题排查Hive本地计算模式失败
    问题排查Hive本地计算模式失败查看hive.log后发现是javaspaceheap,也就是java内存溢出。解决方案:配置yarn集群的资源分配。由于是本地计算,因此container一定是申请在本地的,限制AM申请container容器资源的大小很重要。机器节点的资源可用通过配置NodeManager,所以第一步是......
  • Django实现文件上传、文件列表查看、修改、限流和日志记录8
    Django实现文件上传、文件列表查看、修改、限流和日志记录8本章节,总结一些部署项目遇到的报错,希望会有所帮助NameError:name'datetime'isnotdefined报错“logging.info('用户{}在{}登录成功'.format(username,datetime.now()))NameError:name'datetime'isnotd......
  • Django实现文件上传、文件列表查看、修改、限流和日志记录7
    Django实现文件上传、文件列表查看、修改、限流和日志记录7不管调用的接口在内网,还是外网都需要做好限制保证接口的访问和限流降级处理,本章节新增限流功能。限流功能主要针对两个方面:IP和用户针对IP限流文件列表接口进行限流处理,限制每分钟每个IP访问10次,你可以使用Dja......
  • Django实现文件上传、文件列表查看、修改、限流和日志记录6
    Django实现文件上传、文件列表查看、修改、限流和日志记录6对于已经上传的文件,现在已经实现了文件的查看修改,美中不足的是:需要查看每个文件需要提前记住文件名指定文件名进行查看和修改。为此,新增一个上传文件的列表功能,在通过模版按钮跳转路由到查看和修改页面。实现逻辑查看......
  • Django实现文件上传、文件列表查看、修改、限流和日志记录4
    Django实现文件上传、文件列表查看、修改、限流和日志记录4本章添加用户认证功能,属于安全模块。用户认证在Django中,默认情况下,用户的用户名和密码是存储在数据库中的。Django提供了内置的用户模型(User模型),它可以管理用户的认证和授权。配置数据库在file_upload/settings.py......