细说JDK日志组件
1. 概述
JDK自带的日志组件在包java.util.logging下,如图:
2. 架构
如上图所示,JDK日志组件核心元素包括:Logger,Handler,Filter和Formatter,他们的关系如下:
--Logger
--Handler
--Filter
--Formatter
Handler类图:
JDK日志组件提供Handler比较少,支持将日志输出到控制台,文件,网络。
Formatter类图:
JDK日志组件仅提供了2种日志格式,默认为xml格式。
3. 通过API使用JDK日志组件
// 通过API使用JDK日志组件
private static void log2FileByAPI() throws SecurityException, IOException {
// 将日志记录到文件中
FileHandler fileHandler = new FileHandler("D:/logs/java_util_log.log", true);
Formatter formatter = new SimpleFormatter();
fileHandler.setFormatter(formatter); logger.addHandler(fileHandler);
logger.info("LOG By API");
}
4. 通过配置文件使用JDK日志组件
// 通过配置文件使用JDK日志组件
private static void log2FileByConfig() throws SecurityException, IOException {
// 读取classpath路径下的文件
InputStream is = JDKLogTest.class.getResourceAsStream("/jdklog.properties");
LogManager.getLogManager().readConfiguration(is); logger.log(Level.INFO, "this is a INFO msg");
}
jdklog.properties配置:
# Logging
handlers = java.util.logging.FileHandler, java.util.logging.ConsoleHandler # File Logging
java.util.logging.FileHandler.pattern = D:/logs/java_util_log.log
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.FileHandler.level = INFO
java.util.logging.FileHandler.append = true # Console Logging
java.util.logging.ConsoleHandler.level = ALL
总结:
JDK提供的日志组件,能满足基本的日志需求,功能比较单一:
(1)支持的日志级别比较少: FINEST < FINER < FINE < CONFIG < INFO < WARNING < SEVERE(从低到高排序)。
(2)允许输出日志到文件,控制台,和网络主机。
(3)日志格式比较简单,默认输出格式为xml格式,可以指定为SimpleFormatter。
总之,在日志需求比较简单的情况下,可以使用JDK自带的日志组件;否则,使用第三方日志组件才能满足更加复杂的需求。
细说JDK日志组件的更多相关文章
- 细说java平台日志组件
1. java.util.logging JDK自带日志组件,使用方式简单,不需要依赖第三方日志组件.支持将日志打印到控制台,文件,甚至可以将日志通过网络打印到指定主机.相对于第三方独立日志框架来说, ...
- 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是 ...
- 日志组件 logback
一.简介 Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和logback-access.logb ...
- 五分钟秒懂Java日志组件
Java中有许多种日志记录方式,有些API有占位符,有些API没占位符,初学的人可能会搞不清楚这些日志组件的由来.我一开始的时候也是很懵逼的,后来一点点弄懂了于是就又了这篇文章. 在Java中进行日志 ...
- 【转】java日志组件介绍(common-logging,log4j,slf4j,logback )
common-logging common-logging是apache提供的一个通用的日志接口.用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, comm ...
- Java日志组件2---Log4j(org.apache.log4j.Logger)
如果我们在项目中,需要记录的东西并不多,而且也不需要有太多区分,使用jdk的自带Log完全可以解决问题.但是,在开发的过程中,大多数项目都比较大,为方便找到程序的bug,都是需要系统的记录日志的.这里 ...
- 2015第30周四Java日志组件
Java 日志 API 从功能上来说,日志 API 本身所需求的功能非常简单,只需要能够记录一段文本即可.API 的使用者在需要进行记录时,根据当前的上下文信息构造出相应的文本信息,调用 API 完成 ...
- 关于log4j、jul、jcl、slf4j等等日志组件的理解
日志组件: 我们经常在开发项目的时候,需要打印记录项目过程中的一些日志.那我们经常大概会用到 log4j.jul.jcl.slf4j.simple.nop.logback 等等,那我们就详细介绍下这些 ...
随机推荐
- Android RadioGroup中设置默认选中RadioButton 后,选中两个的问题 解决方法
项目中遇到多个RadioGroup中单选RadioButton ,设置了默认选中第一个 . 然后就 能选中两个RadioButton . . .. 我开始这样给设置默认选中一个的: for (int ...
- 【NowCoder368E】车站(线段树)
[NowCoder368E]车站(线段树) 题面 牛客网 题解 链交的结果显然和求解的顺序无关,因此我们可以拿线段树维护区间链的链交结果. 然后怎么求解最远点. 维护链交的时候再记录两个点表示到达链交 ...
- 【BZOJ5294】[BJOI2018]二进制(线段树)
[BZOJ5294][BJOI2018]二进制(线段树) 题面 BZOJ 洛谷 题解 二进制串在模\(3\)意义下,每一位代表的余数显然是\(121212\)这样子交替出现的. 其实换种方法看,就是\ ...
- js笔记-语句,变量
JavaScript介绍 JavaScript是运行在浏览器端的脚步语言,JavaScript主要解决的是前端与用户交互的问题,包括使用交互与数据交互. JavaScript是浏览器解释执行的,前端脚 ...
- 【php】php实现数组分块
有时候需要将一个大数组按一定大小分块,那么可以实现这个功能,代码如下: /** * @param array $arr * @param int $size <p> * @param bo ...
- 牛客OI周赛7-提高组 B小睿睿的询问(ST打表)
链接:https://ac.nowcoder.com/acm/contest/371/B来源:牛客网 小睿睿的n个妹纸排成一排,每个妹纸有一个颜值val[i].有m个询问,对于每一个询问,小睿睿想知道 ...
- 牛客小白月赛12 F 华华开始学信息学 (分块+树状数组)
链接:https://ac.nowcoder.com/acm/contest/392/F来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32768K,其他语言65536K ...
- Python3 与 C# 面向对象之~继承与多态
2.继承¶ 代码裤子:https://github.com/lotapp/BaseCode 在线编程:https://mybinder.org/v2/gh/lotapp/BaseCode/mast ...
- react-redux单元测试(基于react-addons-test-utils,mocha)
今天补上上次新闻客户端欠下的单元测试.新闻客户端github地址:点我,接上篇博客. 本次单元测试用到了单元测试比较流行的测试框架mocha,用到的是expect断言库,和react官方的测试插件:r ...
- vcftools报错:Writing PLINK PED and MAP files ... Error: Could not open temporary file.解决方案
一般来说有两种解决方案. 第一种:添加“--plink-tped”参数: 用vcftools的“--plink”参数生成plink格式文件时,小样本量测试可以正常生成plink格式,用大样本量时产生W ...