细说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 等等,那我们就详细介绍下这些 ...
随机推荐
- docker-网络基础
网络 Docker 网络从覆盖范围可分为单个 host 上的容器网络和跨多个 host 的网络 Docker 安装时会自动在 host 上创建三个网络, ⚡ root@bogon /home ...
- javascript之复习(css属性值的计算)
js取div的宽高咋办,css有content-box,border-box,padding-box,表现又不一样.好在有个offsetWidth, <style type="text ...
- jquery 表单序列化
1.序列化为URL 编码文本字符串 var serialize = $("form[name=testForm]").serialize(); console.log(serial ...
- 论一个蒟蒻的脑子里可以有多少坑(貌似咕了……目前更新保持在noip阶段)
就是错题整理了,其实也会把一些不该犯的失误整进来. 其实之前一直拖着不想写,直到某次模拟赛,看错了2道题,顺便爆了一道题的int(没错第一个点就会爆)之后爆零了,吓得我赶紧把这篇博客搞出来了..... ...
- 洛谷P2261 余数求和
整除分块的小应用. 考虑到 k % x = k - (k / x) * x 所以把 x = 1...n 加起来就是 k * n - (k / i) * i i = 1...k(注意这里是k) 对于这个 ...
- 【洛谷P1082】同余方程
题目大意:求关于 \(x\) 的同余方程 \[ax \equiv 1 \pmod {b}\] 的最小正整数解. 题解:exgcd 板子题. 代码如下 #include <bits/stdc++. ...
- C#模拟POST表单提交 --- WebClient
string postString = "arg1=a&arg2=b";//这里即为传递的参数,可以用工具抓包分析,也可以自己分析,主要是form里面每一个name都要加进 ...
- HTTP属性管理器 初探
1)HTTP Cache Manager 2)HTTP Cookie 管理器 3)HTTP 信息头管理器 4)HTTP 授权管理器 5)HTTP 请求默认值 为什么会有这些http属性的配置元件? ...
- Counted(内存管理机制)
class Counted { private: unsigned int count_; public: Counted() : count_() { } virtual ~Counted() { ...
- 转:upload.parseRequest为空
上传是items一直是空list.导致原因是struts2把原始的原来S2为简化上传功能,把所有的enctype="multipart/form-data"表单做了wrapper最 ...