Java 日志(Logging)与协同调试

Java 日志(Logging)与协同调试

对于一个应用程序来说日志记录是必不可少的一部分,不仅线上问题追踪,基于日志的业务逻辑统计分析离不日志,按约定编写日志,对于团队协同开发也是至关重要的。

“队友看不懂你的代码”这绝对正确的假设。那如何把集成测试或开发中发现问题相关详细信息告诉问题人(异常输出常是天书),而不要两人坐在一起联合调试?利用日志,打印出业务类(Java 约定每个类都是唯一负责人的)的重要信息是最有价值的,通过研究业务类之间协同关系,调试者就能快速理解业务场景上下文(Context),发现问题所在。

1、日志历史与框架

1.1 历史与发展1

  • 1996年早期,欧洲安全电子市场项目组决定编写它自己的程序跟踪API(Tracing API)。经过不断的完善,这个API终于成为一个十分受欢迎的Java日志软件包,即Log4j。后来Log4j成为Apache基金会项目中的一员。
  • 期间Log4j近乎成了Java社区的日志标准。据说Apache基金会还曾经建议sun引入Log4j到java的标准库中,但Sun拒绝了。
  • 2002年Java1.4发布,Sun推出了自己的日志库JUL(Java Util Logging),其实现基本模仿了Log4j的实现。在JUL出来以前,log4j就已经成为一项成熟的技术,使得log4j在选择上占据了一定的优势。
  • 接着,Apache推出了Jakarta Commons Logging,JCL只是定义了一套日志接口(其内部也提供一个Simple Log的简单实现),支持运行时动态加载日志组件的实现,也就是说,在你应用代码里,只需调用Commons Logging的接口,底层实现可以是log4j,也可以是Java Util Logging。
  • 后来(2006年),Ceki Gülcü不适应Apache的工作方式,离开了Apache。然后先后创建了slf4j(日志门面接口,类似于Commons Logging)和Logback(Slf4j的实现)两个项目,并回瑞典创建了QOS公司,QOS官网上是这样描述Logback的:The Generic,Reliable Fast&Flexible Logging Framework(一个通用,可靠,快速且灵活的日志框架)。
  • 现今,Java日志领域被划分为两大阵营:Commons Logging阵营和SLF4J阵营。Commons Logging在Apache大树的笼罩下,有很大的用户基数。但有证据表明,形式正在发生变化。2013年底有人分析了GitHub上30000个项目,统计出了最流行的100个Libraries,可以看出slf4j的发展趋势更好:

    java_populor_jar

    junit 和 slf4j 真是好 CP。即正规开发团队绝对多数成对使用两个包,初学者或临时项目两者都不用。

  • Apache眼看有被Logback反超的势头,于2012-07重写了log4j 1.x,成立了新的项目Log4j 2。Log4j 2具有logback的所有特性。

1.2 常用日志框架

  • Log4j Apache Log4j是一个基于Java的日志记录工具。它是由Ceki Gülcü首创的。
  • Log4j 2 Apache Log4j 2是apache开发的一款Log4j的升级产品。
  • Commons Logging Apache基金会所属的项目,是一套Java日志接口,叫Jakarta Commons Logging,或 Commons Logging。
  • Slf4j 类似于Commons Logging,是一套简易Java日志门面,本身并无日志的实现。(Simple Logging Facade for Java,缩写Slf4j)。
  • Logback 一套日志组件的实现(slf4j阵营)。
  • Jul (Java Util Logging),自Java1.4以来的官方日志实现。

2、编程与使用

2.1 Log4j简易入门

(1)建立包依赖

打开 pom.xml (如 hello world 程序),在 dependencies 下添加

    <!-- https://mvnrepository.com/artifact/log4j/log4j -->
    <dependency>
      <groupId>log4j</groupId>
      <
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值