一直用的是Log4j记录日志信息,突然发现很多人在用Logger,就总结了下,希望这篇文章对大家学习Logger有用。
首先是创建Logger对象:
static Logger getLogger(String name):为指定系统查找或创建一个logger。
static Logger getLogger(String name,String resourceBundleName):为指定子系统查找或创建一个logger。
JDK内置Logger支持的级别:
JDK内置 Logger提供了如下七种Logger级别,从高到低依次是:
SEVERE->WARNING->INFO->CONFIG->FINE->FINER->FINESET。
可以使用OFF关闭日志记录,使用 ALL 启用所有消息的日志记录。
logger默认的级别是INFO,比INFO更低的日志将不显示。
Logger的默认级别定义是在jre安装目录的lib下面。
JDK内置Logger支持的Handler :
Handler,实现将日志写入指定目的地,JDK Logger主要支持MemoryHandler和StreamHandler两个大类Handler,
另外ConsoleHanler, FileHandler以及SocketHandler都是继承自StreamHandler,分别添加了一些自己的功能,
分别将日志写入控制台、文件、Socket端口。
ConsoleHandler只是将OutputStream设置为System.err,其他实现和StreamHandler类似。
而SocketHandler将OutputStream绑定到对应的端口号中,其他也和StreamHandler类似。另外它还增加了两个配置:
java.util.logging.SocketHandler.port和java.util.logging.SocketHandler.host分别对应端口号和主机。
FileHandler支持指定文件名模板(java.util.logging.FileHandler.pattern),文件最大支持大小
(java.util.logging.FileHandler.limit,字节为单位,0为没有限制),循环日志文件
数(java.util.logging.FileHandler.count)、对已存在的日志文件是否往后添加(java.util.logging.FileHandler.append)。
首先是创建Logger对象:
static Logger getLogger(String name):为指定系统查找或创建一个logger。
static Logger getLogger(String name,String resourceBundleName):为指定子系统查找或创建一个logger。
JDK内置Logger支持的级别:
JDK内置 Logger提供了如下七种Logger级别,从高到低依次是:
SEVERE->WARNING->INFO->CONFIG->FINE->FINER->FINESET。
可以使用OFF关闭日志记录,使用 ALL 启用所有消息的日志记录。
logger默认的级别是INFO,比INFO更低的日志将不显示。
Logger的默认级别定义是在jre安装目录的lib下面。
JDK内置Logger支持的Handler :
Handler,实现将日志写入指定目的地,JDK Logger主要支持MemoryHandler和StreamHandler两个大类Handler,
另外ConsoleHanler, FileHandler以及SocketHandler都是继承自StreamHandler,分别添加了一些自己的功能,
分别将日志写入控制台、文件、Socket端口。
ConsoleHandler只是将OutputStream设置为System.err,其他实现和StreamHandler类似。
而SocketHandler将OutputStream绑定到对应的端口号中,其他也和StreamHandler类似。另外它还增加了两个配置:
java.util.logging.SocketHandler.port和java.util.logging.SocketHandler.host分别对应端口号和主机。
FileHandler支持指定文件名模板(java.util.logging.FileHandler.pattern),文件最大支持大小
(java.util.logging.FileHandler.limit,字节为单位,0为没有限制),循环日志文件
数(java.util.logging.FileHandler.count)、对已存在的日志文件是否往后添加(java.util.logging.FileHandler.append)。
SocketHanlder的例子如下:
package my.logger;
import java.io.IOException;
import java.util.logging.Logger;
import java.util.logging.SocketHandler;
public class SocketHandlerTest {
private SocketHandler handler = null;
private static Logger logger = Logger.getLogger("my.logger.SocketHandlerTest");
public SocketHandlerTest(String host,int port){
try {
handler = new SocketHandler(host,port);
logger.addHandler(handler);
logger.info("SocketHandler运行成功。。。");
} catch (IOException e) {
logger.severe("请检查地址和端口是否正确。。。");
StringBuilder sb = new StringBuilder();
sb.append(e.toString()).append("\n");
for(StackTraceElement elem:e.getStackTrace())
{
sb.append("\tat").append(elem).append("\n");
}
logger.severe(sb.toString());
}
}
public static void main(String args[])
{
new SocketHandlerTest("localhost",8088);
}
}
开启一个Tomcat服务,端口是8088.执行SocketHandlerTest程序,控制输出成功的信息。
六月 27, 2017 11:32:49 上午 my.logger.SocketHandlerTest <init>
信息: SocketHandler运行成功。。。