概述

对于现代的 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. 用NIO实现http协议

    先来看一下本篇博文的目录: 一:简介Nio 二:Nio的好处 三:关于http协议 四:代码实现 五:总结 一:简介Nio 我们都知道io流,那么NIO是什么呢?本篇博文将会带你一探NIO,NIO的全 ...

  2. java实现文件批量导入导出实例(兼容xls,xlsx)

    1.介绍 java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下. 目前我所接触过的导入导出技术主要有POI和iRepo ...

  3. PHP的面向对象 — 封装、继承、多态

    K在上一次的基础篇中给大家介绍了一下关于PHP中数组和字符串的使用方法等,这一次,K决定一次性大放送,给大家分享一下PHP中面向对象的三大特性:封装.继承.多态三个方面的知识. 一.封装 在PHP中, ...

  4. 限制容器对内存的使用 - 每天5分钟玩转 Docker 容器技术(27)

    一个 docker host 上会运行若干容器,每个容器都需要 CPU.内存和 IO 资源.对于 KVM,VMware 等虚拟化技术,用户可以控制分配多少 CPU.内存资源给每个虚拟机.对于容器,Do ...

  5. iOS,Android,Jave后台AES加密解密

    AES256 在iOS和Android上的相关代码: http://www.tuicool.com/articles/RVFbmmU 里面可以下载相关的代码. 我们遇到的问题是: 把Android的代 ...

  6. CentOS 7 for ARM 安装一键Lnmp失败

    背景 前面把树莓派装上了CentOS 7,趁着国庆放假回来赶紧把服务端环境搭起来,为了方便就准备用一键lnmp快速部署一个,结果死活安装不成功... 报错 按照以往的经验进行安装,在我的小树莓派上安装 ...

  7. 关于前后端同构,我的一点思路和心得(vue、nodejs、react、模版、amd)

    最近1年多,前后端同构慢慢变成一个流行词,也许很多人还停留在前后端分离的最佳实践道路上,但实际上又有一批人已经从简单的服务端渲染走向探索最佳前后端同构方案的路上了.不过,我只是膜拜后者的过客. 虽然大 ...

  8. React + Redux + express+ antd 架构的认识

    在过去的两周里,我使用这套技术栈进行项目页面的开发.下面是我个人的对于项目的一些看法: 首先:是项目的调试,我深表压力很大,项目是使用fibber去抓包调试的,也不知道我们项目的负责人,怎么能的我在每 ...

  9. 中学之Vim实践课程

    今天转发娄老师的一篇VIM编辑器的文章,很赞哦!(值得收藏)文后的参考资料记得看一看,也很棒!                               原文地址:http://www.cnblog ...

  10. springboot(十四):springboot整合shiro-登录认证和权限管理

    这篇文章我们来学习如何使用Spring Boot集成Apache Shiro.安全应该是互联网公司的一道生命线,几乎任何的公司都会涉及到这方面的需求.在Java领域一般有Spring Security ...