概述

对于现代的 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. python 集合相关操作

    集合相关操作 集合是一个无序的,不重复的数据组合,它有着两个主要作用:去重以及关系测试. 去重指的是当把一个列表变成了集合,其中重复的内容就自动的被去掉了 关系测试指的是,测试两组数据之间的交集.差集 ...

  2. Java阶段性测试--第四五六大题参考代码

    第四题:.此题要求用IO流完成 使用File类在D盘下创建目录myFiles, 并在myFiles目录下创建三个文件分别为:info1.txt, info2.txt, info3.txt . 代码: ...

  3. day_ha配置文件

    流程图: 代码 #!/sur/bin/env python # -*- coding: utf-8 -*- #{"backend": "www.oldboy.org&qu ...

  4. python不使用第三方变量,交换两个变量的值

    #不使用第三个变量交换两个变量的值 a=1 b=2 a,b=b,a#python的直接交换 #另一种交换方法 a=a+b#a=3 b=2 b=a-b#a=3 b=1 a=a-b#a=2 b=1 pri ...

  5. Hybrid App开发之jQuery基础

    前言: 前面学习了JavaScript/Html/Css的基础知识,今天学习一下常用js框架jQuery的使用进行快速的开发. JQuery的基本功能: 方位和操作DOM元素 控制页面样式 对页面事件 ...

  6. webuploader插件,我踩得坑

    我在目前的公司做的项目要么是原生写法去做项目,要么就是vue+webpack做项目,但是vue这部分只是用了模板template,vue其他的都没用. 有一个项目需要做上传图片的功能,老大扔给我一个插 ...

  7. php简单的文件操作

    (1)先要想好要操作哪个文件? (2)确定文件的路径? (3)要有什么文件管理功能? 一.先做一下简单的查看文件功能,文件中的文件和文件夹都显示,但是双击文件夹可以显示下一级子目录,双击"返 ...

  8. ADO.NET中的DataSet和DataReader

    ADO.NET提供两个对象用于检索关系型数据并把它存储在内存中,分别是DataSet和DataReader.DataSet提供内存中关系数据的表现--包括表和次序.约束等表间的关系的完整数据集合.Da ...

  9. Ubuntu发行版升级

    从UK 13.10升级到UK 14.10 方法一: 1.sudo apt-get update   2.sudo update-manager -c -d   3.选择upgrade(升级)  方法二 ...

  10. 关于并发,关于IIS你真的了解吗?(一)

    本文仅代表带个人观点及理解,本人只是一个编程小菜鸟,如果有不对的地方.请大佬轻喷! 前言:对于很多工作时间短或者编程经验不足的程序员来说,大多数会觉得并发这个词离自己太遥远,之所以知道并发也不过是因为 ...