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相关推荐

  1. Java日志框架SLF4J和log4j以及logback的联系和区别

    1.SLF4J(Simple logging Facade for Java) 意思为简单日志门面,它是把不同的日志系统的实现进行了具体的抽象化,只提供了统一的日志使用接口,使用时只需要按照其提供的接 ...

  2. slf4j,log4j,logback之间的关系

    1.SLF4J(Simple logging Facade for Java) 意思为简单日志门面,它是把不同的日志系统的实现进行了具体的抽象化,只提供了统一的日志使用接口,使用时只需要按照其提供的接 ...

  3. Slf4j、log4j、logback介绍

    Slf4j.log4j.logback介绍 简介 下图来源于slf4j官网,从图中来看,可以得到如下信息: slf4j是接口: log4j.logback.java.util.logging.slf4 ...

  4. 一文搞定:SpringBoot、SLF4j、Log4j、Logback、Netty之间混乱关系(史上最全)

    文章很长,建议收藏起来慢慢读!疯狂创客圈总目录 语雀版 | 总目录 码云版| 总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :<尼恩Java面试宝典>持续更新+ 史上最全 + 面 ...

  5. SLF4J: Class path contains multiple SLF4J bindings(log4j与logback冲突了)

    当你启动service或者web项目的时候,出现了如下详细地异常,那说明你配置的log4j与logback jar包发生了冲突: <span style="color:#ff0000& ...

  6. 日志规范之slf4j整合Log4j以及Logback

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  7. 一文讲尽门面日志slf4j和log4j、log4j2、logback依赖jar引用关系

    前言 之前都是使用SparkStreaming开发,最近打算学习一下Flink,就从官网下载了Flink 1.11,打算搞一个客户端,将程序提交在yarn上.因为Flink从1.7之后就不再提供Had ...

  8. SLF4J 与Log4J

    为什么要使用SLF4J而不是Log4J 每一个Java程序员都知道日志对于任何一个Java应用程序,尤其是服务端程序是至关重要的,而很多程序员也已经熟悉各种不同的日志库如java.util.loggi ...

  9. 常见日志框架介绍和对比(log4j,logback,log4j2)

    文章目录 1. 什么是slf4j? 2. log4j简介和配置 2.1 log4j介绍 2.2 log4j三大组件 2.3 log4j pom依赖引入 2.4 配置log4j 3. logback简介 ...

最新文章

  1. ArrayList 集合
  2. Juniper SSG 防火墙安全防护之拒绝服务×××[新任帮主]
  3. ITK:创建一个自定义颜色图
  4. 为什么要用MyBatis-JDBC 连接数据库
  5. 【图文并茂】通过实例理解word2vec之Skip-gram
  6. MyBatis-Plus 分页查询以及自定义sql分页
  7. STM32:FSMC驱动TFTLCD(ST7789)
  8. mac无法读取移动硬盘怎么办?mac怎么使用ntfs硬盘
  9. 纯粹数学的雪崩效应:庞加莱猜想何以造福了精准医疗?
  10. 【视频来了】那些未曾学到的Esp8266技术干货,都在本系列公开课直播中一一吸收,奉献开源于国内物联网!
  11. 我的理想600字作文计算机方面,我的理想作文600字当一名老师(共8篇)
  12. 攻防世界-mfw-(详细操作)做题笔记
  13. 微信小程序嵌套h5页面+发布微信小程序(超级简单)
  14. 如何选择最适合的房屋贷款方式
  15. android导入库项目,如何在android studio项目中导入开源库?
  16. 高等数学(第七版)同济大学 习题10-2(中5题) 个人解答
  17. java爬虫之爬取博客园推荐文章列表
  18. 虹膜识别—DeepIrisNet2
  19. 分析国内IT各领域软件企业的挣钱实力
  20. c语言关于21点游戏人机对战人人对战设计及源代码

热门文章

  1. cordova 强制竖屏
  2. 使用wireshark观察SSL/TLS握手过程--双向认证/单向认证
  3. Linux系统抓包命令tcpdump使用实例
  4. TX Text Control X10新特性之图像占位符合并
  5. 一篇网站架构的文章:一步步构建大型网站架构
  6. DDOS三种不同类型的攻击行为—Vecloud
  7. Blackey win10 + python3.6 + VSCode + tensorflow-gpu + keras + cuda8 + cuDN6N环境配置(转载)
  8. P4597 序列sequence
  9. 帮助你更好理解javascript中easing功能的网站 - Easings.net
  10. Fedora配置网络DHCP