003_commons-logging与slf4j和log4j与logback
1. 日志接口常用的有commons-logging和slf4j, 日志实现常用的有log4j和logback。那么, 我们应该选取什么样的组合呢?
2. Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块: logback-core, logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个改良版本。此外logback-classic完整实现slf4j api使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。
3. logback与Log4J的比较
3.1. 更快的实现: Logback的内核重写了, 在一些关键执行路径上性能提升10倍以上。而且logback不仅性能提升了, 初始化内存加载也更小了。
3.2. Logback-classic完整实现了slf4j api: logback-classic完整实现slf4j api, 在使用slf4j中, 你都感觉不到logback-classic。因为logback-classic非常自然地实现了slf4j, 所以切换到log4j或者其他日志系统, 非常容易, 只需要提供成另一个jar包就OK, 根本不需要去动那些通过slf4j api实现的代码。
3.3. 自动重载配置文件: 当配置文件修改了, Logback-classic能自动重新加载配置文件。扫描过程快且安全, 它并不需要另外创建一个扫描线程。
3.4. 安全模式和友好恢复: 在谨慎模式下, 多个FileAppender实例跑在JVM下, 能够安全地写同一个日志文件。Logback的FileAppender和它的子类包括RollingFileAppender能够非常友好地从I/O异常中恢复。
3.5. 配置文件可以处理不同的情况: 开发人员经常需要判断不同的Logback配置文件在不同的环境下(开发, 测试, 生产)。而这些配置文件仅仅只有一些很小的不同, 就可以实现, 这样一个配置文件就可以适应多个环境。
3.6. Filters(过滤器): 有些时候, 需要诊断一个问题, 需要打出日志。在log4j, 只有降低日志级别, 不过这样会打出大量的日志, 会影响应用性能。在Logback, 你可以继续保持那个日志级别而除掉某种特殊情况, 如alice这个用户登录, 她的日志将打在DEBUG级别而其他用户可以继续打在WARN级别, 要实现这个功能只需加4行XML配置。
3.7. SiftingAppender(一个多功能的Appender): 它可以用来分割日志文件根据任何一个给定的运行参数。如SiftingAppender能够区别日志事件跟进用户的Session, 然后每个用户会有一个日志文件。
3.8. 自动压缩log日志: RollingFileAppender在产生新文件的时候, 会自动压缩已经打出来的日志文件。压缩是个异步过程, 所以甚至对于大的日志文件, 在压缩过程中应用不会受任何影响。
3.9. 自动去除旧日志: 通过设置SizeAndTimeBasedRollingPolicy或者TimeBasedRollingPolicy的maxHistory属性, 你可以控制已经产生日志文件的最大数量。如果设置maxHistory为12, 那那些log文件超过12个月的都会被自动移除。
4. 当年Apache说服log4j以及其他的日志来按照commons-logging的标准编写, 但是由于commons-logging的类加载有点问题, 实现起来也不友好, 于是乎就用有人创作了slf4j, 也因此而与commons-logging两分天下。更加推荐slf4j+logback的组合。
003_commons-logging与slf4j和log4j与logback相关推荐
- Java日志框架SLF4J和log4j以及logback的联系和区别
1.SLF4J(Simple logging Facade for Java) 意思为简单日志门面,它是把不同的日志系统的实现进行了具体的抽象化,只提供了统一的日志使用接口,使用时只需要按照其提供的接 ...
- slf4j,log4j,logback之间的关系
1.SLF4J(Simple logging Facade for Java) 意思为简单日志门面,它是把不同的日志系统的实现进行了具体的抽象化,只提供了统一的日志使用接口,使用时只需要按照其提供的接 ...
- Slf4j、log4j、logback介绍
Slf4j.log4j.logback介绍 简介 下图来源于slf4j官网,从图中来看,可以得到如下信息: slf4j是接口: log4j.logback.java.util.logging.slf4 ...
- 一文搞定:SpringBoot、SLF4j、Log4j、Logback、Netty之间混乱关系(史上最全)
文章很长,建议收藏起来慢慢读!疯狂创客圈总目录 语雀版 | 总目录 码云版| 总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :<尼恩Java面试宝典>持续更新+ 史上最全 + 面 ...
- SLF4J: Class path contains multiple SLF4J bindings(log4j与logback冲突了)
当你启动service或者web项目的时候,出现了如下详细地异常,那说明你配置的log4j与logback jar包发生了冲突: <span style="color:#ff0000& ...
- 日志规范之slf4j整合Log4j以及Logback
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
- 一文讲尽门面日志slf4j和log4j、log4j2、logback依赖jar引用关系
前言 之前都是使用SparkStreaming开发,最近打算学习一下Flink,就从官网下载了Flink 1.11,打算搞一个客户端,将程序提交在yarn上.因为Flink从1.7之后就不再提供Had ...
- SLF4J 与Log4J
为什么要使用SLF4J而不是Log4J 每一个Java程序员都知道日志对于任何一个Java应用程序,尤其是服务端程序是至关重要的,而很多程序员也已经熟悉各种不同的日志库如java.util.loggi ...
- 常见日志框架介绍和对比(log4j,logback,log4j2)
文章目录 1. 什么是slf4j? 2. log4j简介和配置 2.1 log4j介绍 2.2 log4j三大组件 2.3 log4j pom依赖引入 2.4 配置log4j 3. logback简介 ...
最新文章
- ArrayList 集合
- Juniper SSG 防火墙安全防护之拒绝服务×××[新任帮主]
- ITK:创建一个自定义颜色图
- 为什么要用MyBatis-JDBC 连接数据库
- 【图文并茂】通过实例理解word2vec之Skip-gram
- MyBatis-Plus 分页查询以及自定义sql分页
- STM32:FSMC驱动TFTLCD(ST7789)
- mac无法读取移动硬盘怎么办?mac怎么使用ntfs硬盘
- 纯粹数学的雪崩效应:庞加莱猜想何以造福了精准医疗?
- 【视频来了】那些未曾学到的Esp8266技术干货,都在本系列公开课直播中一一吸收,奉献开源于国内物联网!
- 我的理想600字作文计算机方面,我的理想作文600字当一名老师(共8篇)
- 攻防世界-mfw-(详细操作)做题笔记
- 微信小程序嵌套h5页面+发布微信小程序(超级简单)
- 如何选择最适合的房屋贷款方式
- android导入库项目,如何在android studio项目中导入开源库?
- 高等数学(第七版)同济大学 习题10-2(中5题) 个人解答
- java爬虫之爬取博客园推荐文章列表
- 虹膜识别—DeepIrisNet2
- 分析国内IT各领域软件企业的挣钱实力
- c语言关于21点游戏人机对战人人对战设计及源代码
热门文章
- cordova 强制竖屏
- 使用wireshark观察SSL/TLS握手过程--双向认证/单向认证
- Linux系统抓包命令tcpdump使用实例
- TX Text Control X10新特性之图像占位符合并
- 一篇网站架构的文章:一步步构建大型网站架构
- DDOS三种不同类型的攻击行为—Vecloud
- Blackey win10 + python3.6 + VSCode + tensorflow-gpu + keras + cuda8 + cuDN6N环境配置(转载)
- P4597 序列sequence
- 帮助你更好理解javascript中easing功能的网站 - Easings.net
- Fedora配置网络DHCP