h java u.log_Java日志介绍(1)-java.util.logging.Logger

java.util.logging.Logger是JDK自带的日志工具,其简单实现了日志的功能,不是很完善,所以在实际应用中使用的比较少。本文直接用代码演示其使用方法,文中所使用到的软件版本:Java 1.8.0_191。

1、简单使用

packagecom.inspur.demo.log;importjava.util.logging.FileHandler;importjava.util.logging.Formatter;importjava.util.logging.Level;importjava.util.logging.LogRecord;importjava.util.logging.Logger;public classJULCase {public static voidmain(String[] args) {try{

Logger logger= Logger.getLogger(JULCase.class.getName());//日志保存到文件

FileHandler fileHandler = new FileHandler("d:/temp/a.log", true);

fileHandler.setLevel(Level.INFO);//设置日志格式

fileHandler.setFormatter(newFormatter() {

@OverridepublicString format(LogRecord record) {return record.getLevel() + ":" + record.getMessage() + "\n";

}

});

logger.addHandler(fileHandler);

logger.info("aaaa");

logger.warning("bbbb");

}catch(Exception e) {

e.printStackTrace();

}

}

}

日志消息被转发到已注册的Handler对象;在默认情况下,日志消息会往上递归发送到父Logger的Handler;由于默认的最上面的父Logger设置了ConsoleHandler,所以不需要再添加ConsoleHandler了。

该日志工具对应的配置文件为$JAVA_HOME/jre/lib/logging.properties,部分内容如下:

# default file output is in user's home directory.

java.util.logging.FileHandler.pattern = %h/java%u.log

java.util.logging.FileHandler.limit= 50000java.util.logging.FileHandler.count= 1java.util.logging.FileHandler.formatter=java.util.logging.XMLFormatter

# Limit the message that are printed on the console to INFO and above.

java.util.logging.ConsoleHandler.level=INFO

java.util.logging.ConsoleHandler.formatter= java.util.logging.SimpleFormatter

可以看到ConsoleHandler默认的级别为INFO。

2、与SLF4J结合使用

2.1、jul转为SLF4j

把jul的日志转换为slf4j输出。

a、引入jul-to-slf4j的jar包

org.slf4j

jul-to-slf4j

1.7.30

b、在记录日志前加入如下代码

SLF4JBridgeHandler.removeHandlersForRootLogger();

SLF4JBridgeHandler.install();

完整代码如下:

packagecom.inspur.demo.log;importorg.slf4j.bridge.SLF4JBridgeHandler;importjava.util.logging.Logger;public classJULCase {public static voidmain(String[] args) {try{

SLF4JBridgeHandler.removeHandlersForRootLogger();

SLF4JBridgeHandler.install();

Logger logger= Logger.getLogger(JULCase.class.getName());

System.out.println(logger.getParent().getHandlers()[0]);

logger.info("aaaa");

logger.warning("bbbb");

}catch(Exception e) {

e.printStackTrace();

}

}

}

2.2、SLF4j绑定jul

slf4j使用jul来输出日志;引入slf4j-jdk14的jar包即可。

org.slf4j

slf4j-jdk14

1.7.30

注:jul-to-slf4j和slf4j-jdk14不能同时使用,否则会导致日志事件在SLF4J和jul之间死循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值