细说java平台日志组件
1. java.util.logging
JDK自带日志组件,使用方式简单,不需要依赖第三方日志组件。
支持将日志打印到控制台,文件,甚至可以将日志通过网络打印到指定主机。
相对于第三方独立日志框架来说,支持的日志级别比较少,功能也比较单一。
2. apache commons logging
https://commons.apache.org/proper/commons-logging/index.html
Apache Commons Logging简称JCL。
JCL提供了一个轻量级的日志抽象,为应用程序提供统一的日志API。允许用户使用具体的日志实现,如:log4j,Avalon LogKit,java.util.logging。
当然,JCL同时也提供了一个简单的日志实现org.apache.commons.logging.impl.SimpleLog,将日志输出到System.err。
目前JCL已经停止更新了,最新发布版本为1.2 Release - July 2014。
3. log4j
log4j 1.x: http://logging.apache.org/log4j/1.2/manual.html
log4j 2.x: https://logging.apache.org/log4j/2.x/
主流日志框架,2.x版本继续更新,1.x已经停止。建议在应用程序中使用2.x版本。
4. logback
https://logback.qos.ch/
logback是log4j的作者开发一个新的日志组件,原生支持slf4j实现。
官方宣称logback比log4j小巧,且性能更好,支持更多功能,详见:https://logback.qos.ch/reasonsToSwitch.html。
5. slf4j
https://www.slf4j.org/
slf4j被设计成一个日志框架,为应用程序提供日志API,具体的日志实现可以交给log4j,java.util.logging,logback。
当然,slf4j本身也提供了一个简单的日志实现Slf4jSimple,但是只能输出INFO及以上级别的日志到System.err。
总结:
1. apache commons logging组件和slf4j都是日志抽象框架,为应用程序提供统一的日志操作API,支持多种日志实现,如:log4j。但是目前apache commons logging已经停止更新,活跃度并没有slf4j高,不建议使用。
2. logback作为slf4j的原生实现,所以理论上最佳的日志组件组合是:slf4j + logback。
3. slf4j提供了统一的日志API,将具体的日志实现交给其他日志框架,这带来了很大的灵活性。
那么问题来了,既然存在这么多的日志框架,那如何选择呢?
实际上,我们通常会选择当前主流的框架,比如log4j。当然,logback宣称比log4j更加高效。
那slf4j在什么场合使用呢?slf4j为其他日志框架提供了统一的日志操作api,这对于sdk这样的基础库开发,非常适合使用slf4j,因为你不知道用户最终会选择什么日志框架。
假如不使用slf4j,而是在sdk中使用了log4j,那只能要求sdk的用户也必须使用log4j,这对于用户来说是不能忍受的。
而slf4j使用同一的日志操作api,将具体的日志框架选择权利留给用户,既可以选择log4j,也可以选择logback,甚至可以使用jdk日志组件。
另外,slf4j的日志参数格式化非常方便,在slf4j中可以直接将日志语句写成:logger.info("hello, {}", "hello world");而在log4j中要实现这个效果必须通过String对象实现:
logger.info(String.format("hello, %s", "hello world"));
细说java平台日志组件的更多相关文章
- 细说Java主流日志工具库
概述 在项目开发中,为了跟踪代码的运行情况,常常要使用日志来记录信息. 在Java世界,有很多的日志工具库来实现日志功能,避免了我们重复造轮子. 我们先来逐一了解一下主流日志工具. java.util ...
- Java中日志组件详解
avalon-logkit Java中日志组件详解 lanhy 发布于 2020-9-1 11:35 224浏览 0收藏 作为开发人员,我相信您对日志记录工具并不陌生. Java还具有功能强大且功能强 ...
- java中的日志组件-log4j
1.为什么使用日志组件 Log4J是Apache的一个开放源代码项目,它是一个日志操作包,通过使用Log4J,可以指定日志信息输出的目的地,如控制台.文件.CUI组件.NT的事件记录器:还可以控制每一 ...
- java日志组件介绍(common-logging,log4j,slf4j,logback )
转自:http://www.blogjava.net/daiyongzhi/archive/2014/04/13/412364.html common-logging是apache提供的一个通用的日志 ...
- 转:java日志组件介绍(common-logging,log4j,slf4j,logback )
原网址:http://www.blogjava.net/daiyongzhi/archive/2014/04/13/412364.html common-logging common-logging是 ...
- 五分钟秒懂Java日志组件
Java中有许多种日志记录方式,有些API有占位符,有些API没占位符,初学的人可能会搞不清楚这些日志组件的由来.我一开始的时候也是很懵逼的,后来一点点弄懂了于是就又了这篇文章. 在Java中进行日志 ...
- 细说JDK日志组件
1. 概述 JDK自带的日志组件在包java.util.logging下,如图: 2. 架构如上图所示,JDK日志组件核心元素包括:Logger,Handler,Filter和Formatter,他们 ...
- 【转】java日志组件介绍(common-logging,log4j,slf4j,logback )
common-logging common-logging是apache提供的一个通用的日志接口.用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, comm ...
- Java日志组件logback使用:加载非类路径下的配置文件并设置定时更新
Java日志组件logback使用:加载非类路径下的配置文件并设置定时更新 摘自: https://blog.csdn.net/johnson_moon/article/details/7887449 ...
随机推荐
- Codeforces Bubble Cup 11 J. Moonwalk challenge加强版
题意 有一棵 \(n\) 个节点的树,每条边上有一个字符,有 \(m\) 次询问. 每次会选定两个点 \(u, v\) , \(u\) 到 \(v\) 的路径上的字符形成了一个字符串 \(T\) ,再 ...
- 滚动ListView时图像顺序混乱
本文选自StackOverflow(简称:SOF)精选问答汇总系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术.本文将为读者讲解滚动ListView时图像顺序混 ...
- Double.valueOf(0.0D) 分析
private Double price = Double.valueOf(0.0D); 查看Java API 文档如下: doubleValue public double doubleValue( ...
- [SDOI2010]大陆争霸
幻想历8012年5月12日深夜,斯普林·布拉泽降下神谕:“Trust me, earn eternal life.”克里斯军团士气大增.作为克里斯军团的主帅,你决定利用这一机会发动奇袭,一举击败杰森国 ...
- [SCOI2008]奖励关(期望dp)
你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃). 宝 ...
- python安装tesseract
一.最近在学习python爬虫的时候需要用到tesseract,但书上的给的教程对我并不适用,坑了好久天,才终于成功. 二.方法: 1.由于我看的是静谧博主的那本书.他给的教程在python3安装有问 ...
- 腾讯云centos7安装MySQL
centos就centos呗,为什么要加个腾讯云呢?有这种疑问的兄dei,一定是没被不同云的系统坑过啊,阿里云的Ubuntu和腾讯云的Ubuntu不一样,centos好像也有差别,各个云平台,同样的系 ...
- PHP选择排序算法
说明: 通过假设一个最小数的key,来逐个比较后面的值,如果假设的值大于后面的值,则互换位置. 示例: <?php $a = array(2,13,42,34,56,23,67,365,8766 ...
- R语言修改标题、坐标轴刻度、坐标轴名称的大小(cex.axis、cex.lab、cex.main函数)
修改标题.坐标轴刻度.坐标轴名称的大小,用到了cex.axis.cex.lab.cex.main函数,其中,cex.axis表示修改坐标轴刻度字体大小,cex.lab表示修改坐标轴名称字体大小,cex ...
- Linux 多线程 - 线程异步与同步机制
Linux 多线程 - 线程异步与同步机制 I. 同步机制 线程间的同步机制主要包括三个: 互斥锁:以排他的方式,防止共享资源被并发访问:互斥锁为二元变量, 状态为0-开锁.1-上锁;开锁必须由上锁的 ...