Java日志介绍(1)-java.util.logging.Logger
java.util.logging.Logger是JDK自带的日志工具,其简单实现了日志的功能,不是很完善,所以在实际应用中使用的比较少。本文直接用代码演示其使用方法,文中所使用到的软件版本:Java 1.8.0_191。
1、简单使用
package com.inspur.demo.log; import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger; public class JULCase {
public static void main(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(new Formatter() {
@Override
public String 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 = 50000
java.util.logging.FileHandler.count = 1
java.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包
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.7.30</version>
</dependency>
b、在记录日志前加入如下代码
SLF4JBridgeHandler.removeHandlersForRootLogger();
SLF4JBridgeHandler.install();
完整代码如下:
package com.inspur.demo.log; import org.slf4j.bridge.SLF4JBridgeHandler;
import java.util.logging.Logger; public class JULCase {
public static void main(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包即可。
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>1.7.30</version>
</dependency>
注:jul-to-slf4j和slf4j-jdk14不能同时使用,否则会导致日志事件在SLF4J和jul之间死循环。
Java日志介绍(1)-java.util.logging.Logger的更多相关文章
- Java日志工具之java.util.logging.Logger
今天总结下JDK自带的日志工具Logger,虽然它一直默默无闻,但有时使用它却比较方便.更详细的信息可以查看JDK API手册,本文只是简单示例入门. 创建Logger 我们可以使用Logger的工厂 ...
- 通配置文件的方式控制java.util.logging.Logger日志输出
转自:http://zochen.iteye.com/blog/616151 简单的实现了下利用JDK中类java.util.logging.Logger来记录日志.主要在于仿照log4j方式用配置文 ...
- Java日志组件1---Jdk自带Logger(java.util.logging.Logger)
最近在看日志的一些东西,发现利用JDK自带的log也可以简单的实现日志的输出,将日志写入文件的过程记录如下: 1.新建LogUtil.Java( 里面写了几个静态方法,为log设置等级.添加log控制 ...
- 【java】java自带的java.util.logging.Logger日志功能
偶然翻阅到一篇文章,注意到Java自带的Logger日志功能,特地来细细的看一看,记录一下. 1.Java自带的日志功能,默认的配置 ①Logger的默认配置,位置在JRE安装目录下lib中的logg ...
- java.util.logging.Logger 使用详解
概述: 第1部分 创建Logger对象 第2部分 日志级别 第3部分 Handler 第4部分 Formatter 第5部分 自定义 第6部分 Logger的层次关系 参考 第1部分 创建Logger ...
- java.util.logging.Logger基础教程
从JDK1.4开始即引入与日志相关的类java.util.logging.Logger,但由于Log4J的存在,一直未能广泛使用.综合网上各类说法,大致认为: (1)Logger:适用于小型系统,当日 ...
- java.util.logging.Logger基础
1. 定义 java.util.logging.Logger是Java自带的日志类,可以记录程序运行中所产生的日志.通过查看所产生的日志文件,可以分析程序的运行状况,出现异常时,分析及定位异常. 2. ...
- 2.java.util.logging.Logger使用详解
一.java.util.logging.Logger简介 java.util.logging.Logger不是什么新鲜东西了,1.4就有了,可是因为log4j的存在,这个logger一直沉默着, 其实 ...
- java.util.logging.Logger使用详解 (转)
http://lavasoft.blog.51cto.com/62575/184492/ ************************************************* java. ...
随机推荐
- redis本地能访问外网不能访问问题
1.确认配置文件bind的ip是否正确,一般想要外网能访问,需要填写为0.0.0.0,表示监听任何ip 注意任何人都能访问,一定要开启密码 requirepass 你的密码 2.确认protected ...
- asmx 、Web Service、Web API
asmx .Web Service.Web API asmx 是WEB服务文件 asmx.cs里有相关代码 属于B/S形式,用SOAP方式HTTP访问,用XML返回 可以返回基础类型和PUBLIC结构 ...
- Linux - cron - 基础
概述 cron 相关的理解与使用 背景 最近实在没啥写的了 我写东西, 一般是是这些 看了书过后, 做一些系统的整理 比如之前的 docker 和 git 系列 遇到了实际问题, 解决过程也不是那么顺 ...
- Android 获取手机的厂商、型号、Android系统版本号等工具类(转载)
Android 获取手机的厂商.型号.Android系统版本号等工具类 1.获取手机制造厂商 2.获取手机型号 3.获取手机系统当前使用的语言 4.获取Android系统版本号 5.获取手机IMEI串 ...
- 解决com.netflix.zuul.FilterProcessor : null异常
ZuulFilter过滤器的filterType方法返回一个字符串代表过滤器的类型,如果return null就会出现以上错误. 在zuul中有以下四种不同生命周期的过滤器类型 pre:路由之前 ro ...
- JS高级---为内置对象添加原型方法
为内置对象添加原型方法 我们能否为系统的对象的原型中添加方法, 相当于在改变源码 我希望字符串中有一个倒序字符串的方法 //我希望字符串中有一个倒序字符串的方法 String.prototype. ...
- 修改vsftpd的默认根目录/var/ftp/pub到其他目录
修改ftp的根目录只要修改/etc/vsftpd/vsftpd.conf文件即可: 加入如下几行: local_root=/var/www/html chroot_local_user=YES ano ...
- Git - 02. git 版本库简述: 类比平行宇宙
1. 概述 简单描述 平行宇宙世界观 将 git 与 平行宇宙世界观 做一个类比, 方便理解 熟悉科幻, 或者具体点, 是 漫威宇宙 的朋友, 可以稍微轻松一点 这个是 第一次 重写后的版本. 代码在 ...
- iOS 10.3+ 动态修改 App 图标
支持系统: iOS 10.3+ tvOS 10.2+ Apple 官方文档 官方 API: @interface UIApplication (UIAlternateApplicationIcons) ...
- Xcode 内存泄露检查出现:nil returned from a method that is expected to return a non-null value iOS 解决方案。
在 使用 Xcode 检查内存泄露时(cmd+shift+B)运行,出现了一个警告:nil returned from a method that is expected to return a no ...