首页 > 其他分享 >日志过量优化

日志过量优化

时间:2024-12-20 15:12:19浏览次数:9  
标签:log 处理 打印 频次 过量 日志 高频 优化

背景

有两个B端服务,因为不好的日志习惯,无效日志量过大,日志经常被自动覆盖,只能存几天,导致排查问题困难,针对此,做了下无效日志的清理优化, 本身没什么技术含量,但是操作起来比较恶心。

这个问题的关键是对于一个复杂的B端项目,每天百G的文件里量,如何找到无效日志。

首先, 查看日志文件,平均每天上百G的日志文件,docker的容量有成本

分析

打日志固然是个好习惯,但是往往我们的一些非关键日志会因为使用不当,或者通过调用含有日志的方法导致日志过多,带来两个影响,一是排查问题困难,二是无效日志会导致磁盘爆炸而不得不缩短日志保存周期。针对次总结了几种方法来处理

  • 针对性处理
    • 日志频次过高
    • 单条日志过长且无用
    • 特殊场景
      • 高频定时任务
      • 全局处理、切面(Java Spring下)等
  • 通用性处理
    • 日志环境分级打印
    • 关键高频日志打印开关配置化
    • 日志截断

日志频次过高

查询日志出现频次

// 查询高频日志
awk -F'[][]' '{print $6}' app.log | sort | uniq -c | sort -rn | head -n 20

根据此我们可以找到哪些高频日志,去看下是否真的需要以及合理,比如在我们这个场景下,每个小时的日志文件里有100多万次记录,排查发现是历史堆砌逻辑循环套循环的使用,大部分是不合理的。

单条日志过长且无用

// 显示日志文件里最长的10条日志,倒序排序
awk '{ print length, $0 }' app.log | sort -nr | head -n 10

查询有没有打印字节流、或者图片base64、或者size超长的list比如定时的缓存,getAll诸如此类。

高频定时任务日志

搜索项目代码里的高频定时任务、切面、全局处理等

日志环境分级打印

这个就不说了,需要的是日常开发中要规范些,不要随手打印,对写下的每一行代码负责。

关键高频日志打印开关配置化

对于量大、高频且用到的频次较低的日志,可以增加Apollo控制开关,控制是否开启。
比如我们有一个ETL服务,会将十几种上游数据,经过n层转换,以获取我们系统用到的归一化数据,整个上游数据是十几个库,如果全打印,必然会造成存储爆炸。

做法是,在入口和出口出保留完整日志,其他中间转换层,保留配置化的日志开关

if (AoplloConfig.getWorksheetTransOpen()) {
    log.info("worksheetTransMsg={}", worksheetMsg);
}

日志截断

以Java logback为例,可以添加全局的日志截断操作,对于过长日志做截断操作处理。
可以通过继承ClassicConverter类重写convert方法来实现全局的日志输出前处理操作
参考logback下日志输出前处理操作——以日志脱敏为例

标签:log,处理,打印,频次,过量,日志,高频,优化
From: https://www.cnblogs.com/zhaodongge/p/18619310

相关文章

  • python 日志装饰器@logexecution 用法及案例
    在Python中,日志装饰器(@logexecution)是一种用于在函数或方法执行前后自动记录日志的装饰器。这种装饰器对于调试、监控和审计代码执行非常有用。下面是一个简单的日志装饰器的实现及其用法案例:日志装饰器实现importloggingimportfunctools#配置日志记录器(可选,但通常建议这......
  • 5分钟速览:优化项目管理必备的5款高效工具
    在当前的数字化时代,项目管理软件已成为企业不可或缺的工具,它们能够帮助企业优化资源配置、提高团队协作能力和响应速度。以下是对5款企业必备的项目管理软件的测评:板栗看板●简介:板栗看板是一款灵活高效的看板效率工具,适用于个人待办、知识笔记及团队任务协同等多种场景。其直......
  • 智源:LoRA参数共享优化LLM多任务学习
    ......
  • 系统日志调试
    本文内容转载:https://www.landui.com/docs-4639为防掉失复制一份为应用程序池“XXX”提供服务的进程在与WindowsProcessActivationService通信时出现严重错误。该进程ID为“XXXX”。数据字段包含错误号。症状   日志中大量报错,IIS严重错误,此类错误默认情况下5......
  • 数据库设计的四大原则:优化性能、保证一致性与高效处理
    目录一.数据冗余最小化二.数据一致性三.事务处理四.查询性能优化数据库设计不仅是关于创建表和字段的简单任务,更是构建一个高效运行、易于维护且能够确保数据一致性的系统的核心。一个好的数据库设计不仅能提升应用程序的性能,还能为未来的扩展和维护奠定坚实基础。......
  • JavaScript开发中常见问题代码和相关优化Demo参考1.0
    1.异步编程的理解和使用问题代码:functionfetchData(url,callback){setTimeout(()=>{//模拟异步请求constdata={message:"HelloWorld"};callback(data);},1000);}fetchData('http://example.com',function(response){conso......
  • 集团企业官网“老毛病”多?这些优化策略助你有效升级!
    集团型企业往往具有长链条、多业态、多层级、多资本结构以及小总部、大板块等典型特征。这些特征在为企业带来规模与多元化优势的同时,也给官网建设带来了不小的挑战。蒙特网站根据二十余年网站建设经验,为大家总结了集团网站建设难点及优化升级策略。一、集团企业典型特征与网......
  • NVIDIA 控制面板 是一个功能强大且易于使用的工具,可以帮助用户根据不同需求优化显卡的
    NVIDIA控制面板(NVIDIAControlPanel)是由NVIDIA提供的一款图形卡驱动软件,主要用于配置和调整与NVIDIA显卡相关的各种设置。它通常安装在你的计算机上,当你安装了NVIDIA显卡驱动时,控制面板也会被自动安装。一、NVIDIA控制面板的功能NVIDIA控制面板提供了多种功能,让用户能......
  • 优化 MyBatis SqlSession 工具类:提升代码健壮性与可维护性
    优化MyBatisSqlSession工具类:提升代码健壮性与可维护性引言在Java开发中,MyBatis是一个广泛使用的持久层框架,而SqlSession是MyBatis的核心对象之一。为了简化SqlSession的管理,我们通常会编写一个工具类来封装其创建、提交、回滚和关闭等操作。本文将基于一个常见的......
  • 深入解析:Nginx通过一个域名配置多个HTTPS项目的实现与优化
    目录引言Nginx基础知识什么是NginxNginx的核心功能多项目部署的需求分析实现一个域名配置多个项目准备工作配置HTTPS的基本步骤配置多个项目的两种方式Nginx配置文件详解基于路径区分项目基于子域名区分项目HTTPS配置中的注意事项证书生成与管理多项目使用单一证书......