ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

关于log4j2的一些想法

2021-12-25 22:36:39  阅读:164  来源: 互联网

标签:功能 www 想法 关于 https org 软件 日志 log4j2


最近两天关于log4j2的远程代码执行漏洞有很多讨论,但是很多都是非技术性的。作为一个技术博客,让我们从技术的角度来做一些讨论,同时记录自己的一些想法。

为什么需要日志功能

对于成熟的面向最终用户的软件产品,不管是目标用户是企业还是个人,都会存在或多或少的问题,缺陷,bug等。由于各种因素的限制,出现问题的时候软件开发人员不可能在线调试,定位,甚至看不到问题的表现,或者即使用户反馈了现象,但是描述是不准确的。针对这种情况,软件开发人员不能放之问题不管,只能思考其他的问题分析解决方法。日志功能是针对这种场景的一种重要手段,具体是软件在日常运行过程中,将重要的事件,行为,异常等信息记录下来,有条件还需要记录到文件中持久保存。当软件开发人员需要定位的时候,将问题发生时以及前后的日志倒出来,根据这些日志分析问题发生的原因,进而解决问题。另一种需要日志功能的场景是,软件问题偶尔出现,软件人员长时间监控软件行为耗时耗力,这个时候也需要日志功能来辅助分析问题。

对于互联网的基石网络设备来说,日志是很重要的功能,很多广泛使用的产品都有具体而详细的日志功能。比如:
https://www.cisco.com/c/en/us/td/docs/routers/access/wireless/software/guide/SysMsgLogging.html
https://support.huawei.com/enterprise/en/doc/EDOC1000178167/90adc2f5/configuring-log-output
https://www.h3c.com/en/d_201601/914610_294551_0.htm

对于手机客户端软件来说日志功能也很重要,微信的帮助页面就有上传日志功能界面,帮助微信团队分析用户遇到的问题。

对于这次Log4j2引起的远程日志漏洞来说,之所以影响这么大,就是因为很多基于java开发的网站服务,都用到了Log4j2来记录软件日志。

由上面可以知道,日志功能是软件非常重要的一项功能,甚至说其是互联网软件的基石都不为过。虽然log的api使用起来可能很简单,但是越简单的使用接口内部实现可能会越复杂,比如内存申请和释放只有alloc/free两个api,但是内存管理本身是一件非常复杂的事情。

日志有哪些重要特性

根据上述对日志的分析,以及自己使用使用中的体会,日志应该具有如下一些功能。同时rfc3164和rfc5424也定义了syslog的基本功能,可以参考一下。

  1. 日志输出api接口统一,格式规范。软件的各个模块可以使用统一的接口输出日志信息,便于分析日志的使用情况。
  2. 日志输出支持不同的级别,以便于过滤不同级别的信息,便于分析重要问题,同时不被非重要信息干扰。
  3. 日志输出支持不同的形式,主要有控制台打印,文件形式,内存缓存,网络报文等,便于使用不同工具分析日志。
  4. 日志输出支持计数统计,丢弃个数,发送或者记录失败个数,限速等各种控制功能。
  5. 日志功能具有高性能吞吐的特点,同时不应对系统正常功能产生影响,日志功能应该支持动态开启和关闭。
  6. 日志功能本身的实现要尽可能清晰和简单,不占用太多的系统资源,支持常见的软件开发平台。

log4j2的主要实现机制

https://logging.apache.org/log4j/2.x/manual/architecture.html

log4j2的优势在于哪里

https://logging.apache.org/log4j/2.x/manual/index.html

日志功能的未来发展

远程监控功能
软件调试技术
分布式数据库

扩展想法

软件基础设施建设
软件漏洞数据库CVE
软件开放源代码

参考资料

https://logging.apache.org/log4j/2.x/index.html
https://stackify.com/syslog-101/
https://www.ietf.org/rfc/rfc3164.txt
https://www.ietf.org/rfc/rfc5424.txt

标签:功能,www,想法,关于,https,org,软件,日志,log4j2
来源: https://www.cnblogs.com/lionelgeng/p/15730350.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有