java.util.logging.Logger的使用总结

来源:互联网 发布:c语言编写游戏 编辑:程序博客网 时间:2024/05/17 00:51
一直用的是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)。


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运行成功。。。

 
原创粉丝点击