1.简介
(1)收获
最近在学日志,log4j2, logback, log4j 什么的,比较多的问题, 反倒忽略了最简单的Java.util.logging。
与其他的日志不同,Java.util.logging的日志级别为SEVERE (严重), WARNING(警告), INFO (信息),CONFIG(配置),FINE(详细), FINER(较详细),FINEST (非常详细) 等。
与log4j2相比,Java.util.logging适用于小型系统,当日志量过大时性能有待提升,并发性能不够。不过好在Java.util.logging是原生的JDK类集,无需引入maven新包,尽管比不上logback, log4j2, 但也有它自己的优势。
(2)各个类
重要的类有Logger类(记录器)和Handler类(处理器),二者分别完成以下功能:
(1)Logger:日志记录器,实现记录日志,设置日志级别等功能。
(2)Handler:日志处理器,属于接口对象,决定日志的输出方式等。
其他的比较重要的类还有:
Level :日志的记录级别
Filter 日志过滤器,接口,在日志被 Handler 处理之前,起过滤作用
LoggerManager: 日志管理器
Formatter: 日志格式化转换器,接口对象,决定日志的输出格式
import java.io.IOException;
import java.util.logging.Logger;
/***Created by mo
*On 2017/9/14 ***15:04.
******/
public class SimpleLoggingTest {
static Logger logger = Logger.getLogger("SimpleLoggingTest");
public static void main(String[] args) throws IOException {
try {
logger.severe("这是[severe]信息");
logger.warning("这是[warning]信息");
logger.info("这是[info]信息");
logger.config("这是[config]信息");
logger.fine("这是[fine]信息");
logger.finer("这是[finer]信息");
logger.finest("这是[finest]信息");
}catch(ArithmeticException e) {
e.printStackTrace();
}
}
}
# "handlers" specifies a comma separated list of ConsoleHandler
handlers= java.util.logging.ConsoleHandler
#整个 Default logging level.
.level= ALL
#控制台 Limit the message that are printed on the console to CONFIG and above.
java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
/***Created by mo
*On 2017/9/14 ***13:14.
******/
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.LogManager;
import java.util.logging.Logger;
public class LoggerPropreties {
static Logger logger = Logger.getLogger("LoggerPropreties");
static LogManager logManager = LogManager.getLogManager();
public static void main(String[] args) throws IOException{
try {//读取配制文件
InputStream inputStream = LoggerPropreties.class.getClassLoader().getResourceAsStream("logging.properties");
logManager.readConfiguration(inputStream);
logManager.addLogger(logger); //添加Logger
logger.severe("这是[severe]信息");
logger.warning("这是[warning]信息");
logger.info("这是[info]信息");
logger.config("这是[config]信息");
logger.fine("这是[fine]信息");
logger.finer("这是[finer]信息");
logger.finest("这是[finest]信息");
} catch (SecurityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch(ArithmeticException e) {
e.printStackTrace();
}
}
}
我们很容易得到结果为:
Filter 日志过滤器,接口对象,在日志被 Handler 处理之前,起过滤作用
Filter 日志过滤器,接口对象,在日志被 Handler 处理之前,起过滤作用