昨天我把高并发反序列化测试结果给提出问题的团队看了,我认为反序列化缺少某个类造成hessian打印日志,对性能的影响不大,但他们测试发现会有几十倍的差距,并给了个博客表明高并发log4j同步日志输出的性能瓶颈,我看了确实有道理,但我测试并发还不够大吗,都100线程20次查询,也进行1000线程10次查询,并没有出现文章所说的竞争同步锁的现象,我突然发现是不是我用的是log4j2,而不是log4j的原因。
之前log4j2因为远程代码执行漏洞,我和同事还加班把20多个服务log4j2升级到2.16.0,期间还遇到由于将系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true禁用lookup,反而造成服务问题的事发生。
我就在好奇这log4j和log4j2的区别,什么同步日志异步日志,日志框架,遂记录一下。
- 日志框架
- 同步日志、异步日志
- log4j和log4j2
- log4j-api log4j-core log4j-jcl log4j-jul sl4j-log4j12 log4j-slf4j-impl 傻傻分不清楚
- log4j2远程代码执行漏洞
- 禁用lookup的坑(同事找到的)
疑问:
- 为什么api和实现之间要适配层,比如slf4j-log4j12?
- 日志记录原理?(比较深入了,日后再了解,大概知道什么bind绑定具体实现)
slf4j:Simple Logging Facade for Java,为java提供的简单日志Facade。(4j 原来就是for java的意思,学习了,以前只知道2代表to)
[日志简介]https://www.cnblogs.com/lujiango/p/8573411.html
[日志切换]https://blog.csdn.net/jybzjf/article/details/84739475
[简洁明了]https://www.jianshu.com/p/370ed25cb7c4
[条例很清晰]https://blog.csdn.net/u010647035/article/details/85037206
简述一下:
- commong-logging和slf4j是日志接口,log4j、log4j2、logback是日志实现
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)