概述

对于现代的 Java 应用程序来说,只要被部署到真实的生产环境,其日志的重要性就是不言而喻的,很难想象没有任何日志记录功能的应用程序被运行于生产环境中。日志 API 所能提供的功能是多种多样的,包括记录程序运行时产生的错误信息、状态信息、调试信息和执行时间信息等。在生产环境中,日志是查找问题来源的重要依据,应用程序运行时的产生的各种重要信息,都应该通过日志 API 来进行记录。

很多Java开发人员习惯于使用 System.out.println、System.err.println 以及异常对象的 printStrackTrace 方法来输出相关信息。这些使用方式虽然简便,但是所产生的信息量比较少,而且也没有被长久保存下来,在应用出现问题需要查找原因时,这些方式并不能提供有效的帮助。这些方式都不应该出现在正式的生产环境代码中,而是应该改为使用 Java 日志框架。使用日志框架并没有增加很多复杂度,但是所提供的好处是显著的。

框架

记录日志是 Java 应用开发中必不可少的功能特性,在 JDK 的早期版本中并不包含日志记录相关的 API 和实现。从 JDK 1.4 开始,SUN 官方在 java.util.logging 包中开始引入了 Java Logging API,简称为 JUL。此外,Java 社区也开发和贡献了很多开源、优秀的日志 API 和实现。其中比较优秀的有 Log4j、Logback、Log4J2、Apache Commons Logging(ACL) 和 SLF4J等等。

无论是 JDK 中提供的 JUL 框架,还是其他第三方提供的 Log4j、ACL 等框架,它们的目的都是为了满足在 Java 应用中可以便利地和清晰地记录日志信息的功能性需求。但是,这些框架在设计思路与理念在还是存在着巨大的差异,这也直接导致了它们在 Java 领域的市场份额的差异。此外,按照它们所处的层次差异与功能差异,可以将这些热门的日志框架分成两个派系:

  • Java 日志实现框架:比如 JUL、Log4j、Logback、Log4j2
  • Java 日志封装框架:比如 ACL、SLF4J、Log4j2

Log4j2 比较特殊,既是一个实现框架,又是一个封装框架。

针对在 Java 应用中进行日志信息记录的这个常见性需求,JDK 平台和第三方却提供了这么多优秀的框架和选择。对于 Java 的新手而言,如何选择适合当前项目的日志框架显然是一个不可不解决的问题。笔者作为过来人,决定竭尽全力,在博采众家之所长的情况下,为各位读者朋友写一个 Java 日志框架相关的终极教程。考虑到各个框架的流程度和功能特性,本教程将优先讲解如下列出的这些框架,后期根据实际情况可能会有调整。

java.util.logging(JUL)
log4j
logback
Apache Commons Logging(ACL)
SFL4J
Log4j2

总结

日志记录对于任意一个 Java 应用而言都是必不可少的功能性需求,但是由于历史原因,Java 领域出现了多种有优秀的日志框架,Java 新手面对这样的局面往往会感到迷茫。笔者作为过来人,希望在博采众长的基础上,写出一篇 Java 日志框架的终极教程,帮助读者朋友轻松掌握关于 Java 日志记录的所有知识点和技能。

Java 日志框架终极教程的更多相关文章

  1. Java程序员最常用的8个Java日志框架

    转自:http://www.codeceo.com/article/8-java-log-framework.html 作为一名Java程序员,我们开发了很多Java应用程序,包括桌面应用.WEB应用 ...

  2. 转:Java程序员最常用的8个Java日志框架

    作为一名Java程序员,我们开发了很多Java应用程序,包括桌面应用.WEB应用以及移动应用.然而日志系统是一个成熟Java应用所必不可少的,在开发和调试阶段,日志可以帮助我们更好更快地定位bug:在 ...

  3. Java日志框架那些事儿

    文章首发于[博客园-陈树义],点击跳转到原文Java日志框架那些事儿. 在项目开发过程中,我们可以通过 debug 查找问题.而在线上环境我们查找问题只能通过打印日志的方式查找问题.因此对于一个项目而 ...

  4. Java基础学习总结(40)——Java程序员最常用的8个Java日志框架

    作为一名Java程序员,我们开发了很多Java应用程序,包括桌面应用.WEB应用以及移动应用.然而日志系统是一个成熟Java应用所必不可少的,在开发和调试阶段,日志可以帮助我们更好更快地定位bug:在 ...

  5. Java日志框架总结

    1. 前言 从写代码开始,就陆陆续续接触到了许多日志框架,较常用的属于LOG4J,LogBack等.每次自己写项目时,就copy前人的代码或网上的demo.配置log4j.properties或者lo ...

  6. Java-最常用的Java日志框架整理

    Java-最常用的Java日志框架整理 前言 Java程序员,我们开发了很多Java应用程序,包括桌面应用.WEB应用以及移动应用.然而日志系统是一个成熟Java应用所必不可少的,在开发和调试阶段,日 ...

  7. java日志框架系列(4):logback框架xml配置文件语法

    1.xml配置文件语法 由于logback配置文件语法特别灵活,因此无法用DTD或schema进行定义. 1.配置文件基本结构 配置文件基本结构:以<configuration>标签开头, ...

  8. java日志框架log4j详细配置及与slf4j联合使用教程

    最后更新于2017年02月09日 一.log4j基本用法 首先,配置log4j的jar,maven工程配置以下依赖,非maven工程从maven仓库下载jar添加到“build path” <d ...

  9. [转载]java日志框架log4j详细配置及与slf4j联合使用教程

    一.log4j基本用法 首先,配置log4j的jar,maven工程配置以下依赖,非maven工程从maven仓库下载jar添加到“build path” 1 2 3 4 5 <dependen ...

随机推荐

  1. PropertyGrid自定义控件

    PropertyGrid是一个很强大的控件,使用该控件做属性设置面板的一个好处就是你只需要专注于代码而无需关注UI的呈现,PropertyGrid会默认根据变量类型选择合适的控件显示.但是这也带来了一 ...

  2. 构建工具Gulp

    前面的话 与grunt类似,gulp也是构建工具,但相比于grunt的频繁IO操作,gulp的流操作能更快更便捷地完成构建工作.gulp借鉴了Unix操作系统的管道(pipe)思想,前一级的输出,直接 ...

  3. SQL之trigger(触发器)

    先来看一小段程序 有如下三张表: 帐户(编号,姓名,余额,建立日期,储蓄所编号) 储蓄所(编号,名称,地址,人数,所属城市) 借贷(帐户,借贷类型,金额,日期) create trigger tri_ ...

  4. Latex: 插入数学公式

    write equations align equations to left To only align one equation, you can \begin{flalign} &\te ...

  5. MySQL删除表方式差异

    数据库删除语句 Drop/Delete/Truncate比较 Delete :删除数据表中的行(可以删除某一行,也可以在不删除数据表的情况下删除所有行). 删除某一行:Delete from 数据表名 ...

  6. Spring Boot 构建 WAR和JAR 文件

    原文:https://github.com/x113773/testall/issues/3 ## JAR文件方式一:1. 修改[pom.xml](https://github.com/x113773 ...

  7. [leetcode-513-Find Bottom Left Tree Value]

    Given a binary tree, find the leftmost value in the last row of the tree. Example 1: Input:  2 / \ 1 ...

  8. Android如何实现定位获取

    一:GPS定位: (1).要实用Adnroid平台的GPS设备,首先需要添加上权限,所以需要添加如下权限: uses-permission android:name= android.permissi ...

  9. IE的hack问题浅谈

    *我一直以为是IE7的专属选择. 开始,我以为是bug ,怎么可能会有+号.一定是哪位同事写错了.找了度娘才知道自己的不足.原来也是可以的. 后来,通过ie8和ie7来调整自己的css.也感觉不用ha ...

  10. 【巨杉答疑】巨杉数据库和mongodb有什么关系吗?

    哈罗,艾瑞巴蒂~巨杉答疑栏目今日上线啦! 巨杉数据库作为商业化开源软件,已经拥有大量社区用户.开源至今,大到分布式数据库原理.架构问题,小到SDB巨杉数据库的安装使用问题,大家似乎都有很多问题想要和我 ...