java日志框架(一)JUL 学习 ,这个是什么,他在代码中如何使用,一篇文章讲清楚
这里写目录标题
- JUL 是什么
- JUL组件介绍
- 代码中如何使用(控制台输出)
- 日志级别
- 自定义输出级别
- 输出日志到文件(磁盘文件中)
- 日志对象父子关系
- 配置文件
- 使用方法总结
JUL 是什么
JUL全称Java util Logging是java原生的日志框架,使用时不需要另外引用第三方类库,相对其他日志框
架使用方便,学习简单,能够在小型应用中灵活使用。
也就是主要就是学习那个包
JUL组件介绍
代码中如何使用(控制台输出)
1 首先创建一个maven项目
2 写对应代码
第三个方式:
// 通过占位符 方式输出变量值String name = "jing";Integer age = 13;logger.log(Level.INFO,"用户信息:{0},{1}",new Object[]{name,age});
整体代码:
package com.controller;import org.junit.Test;import java.util.logging.Logger;
public class JULTest {@Testpublic void test(){// // 1.创建日志记录器对象,不是直接new,因为这个类受保护,所以只能使用静态方法进行创建对象Logger logger = Logger.getLogger("com.controller.JULTest");// 2.日志记录输出logger.info("dddddd");// 通用方法进行日志记录logger.log(Level.INFO,"info msg");// 通过占位符 方式输出变量值String name = "jing";Integer age = 13;logger.log(Level.INFO,"用户信息:{0},{1}",new Object[]{name,age});}
}
日志级别
每个级别看源码,都有数值,从大到小排列
也就是如果不配置,默认就只能打印3个级别的日志信息
自定义输出级别
Java默认的只能输出3个级别,并且默认的还是输出到控制台。我们现在想要输出其他多个级别,并且输出到文件里面。那么如何做?
只能自定义输出级别了。自定义的时候,先要关闭默认的。
// 1.获取日志记录器对象Logger logger = Logger.getLogger("com.controller.JULTest");// 关闭系统默认配置,之后就可以自己配置了logger.setUseParentHandlers(false);
// 自定义日志级别@Testpublic void testLogConfig()throws Exception{// 1.获取日志记录器对象Logger logger = Logger.getLogger("com.controller.JULTest");
// 关闭系统默认配置logger.setUseParentHandlers(false);
// 自定义配置日志级别// 创建ConsolHhandler 控制台输出ConsoleHandler consoleHandler = new ConsoleHandler();// 创建简单格式转换对象SimpleFormatter simpleFormatter = new SimpleFormatter();// 进行关联consoleHandler.setFormatter(simpleFormatter);logger.addHandler(consoleHandler);
// 配置日志具体级别logger.setLevel(Level.ALL);consoleHandler.setLevel(Level.ALL);// 2.日志记录输出logger.severe("severe");logger.warning("warning");logger.info("info"); // 默认日志输出级别logger.config("config");logger.fine("fine");logger.finer("finer");logger.finest("finest");}
输出日志到文件(磁盘文件中)
// 自定义日志级别@Testpublic void testLogConfig()throws Exception{// 1.获取日志记录器对象Logger logger = Logger.getLogger("com.controller.JULTest");// 关闭系统默认配置logger.setUseParentHandlers(false);// 自定义配置日志级别// 创建ConsolHhandler 控制台输出ConsoleHandler consoleHandler = new ConsoleHandler();// 创建简单格式转换对象SimpleFormatter simpleFormatter = new SimpleFormatter();// 进行关联consoleHandler.setFormatter(simpleFormatter);logger.addHandler(consoleHandler);// 配置日志具体级别logger.setLevel(Level.ALL);consoleHandler.setLevel(Level.ALL);// 场景FileHandler 文件输出FileHandler fileHandler = new FileHandler("/logs/jul.log");// 进行关联fileHandler.setFormatter(simpleFormatter);logger.addHandler(fileHandler);// 2.日志记录输出 以下级别从大到小logger.severe("severe");logger.warning("warning");logger.info("info"); // 默认日志输出级别logger.config("config");logger.fine("fine");logger.finer("finer");logger.finest("finest");}
以上创建了两个Handler,一个是控制台的,一个是文件的,把这个Handler设置到日志记录器对象里面。
以后的日志不仅仅是控制台输出了,而且还可以输出到文件
运行上面代码之后:
还有文件:
这个里面的日志和控制台的一模一样
日志对象父子关系
// Logger对象父子关系@Testpublic void testLogParent()throws Exception{Logger logger1 = Logger.getLogger("com.controller.JULTest");Logger logger2 = Logger.getLogger("com.controller");// 测试System.out.println(logger1.getParent() == logger2);// 所有日志记录器的顶级父元素 LogManager$RootLogger,name 为 ""System.out.println("logger2 Parent:"+logger2.getParent() + ",name:" + logger2.getParent().getName());// 关闭默认配置logger2.setUseParentHandlers(false);// 设置logger2日志级别// 自定义配置日志级别// 创建ConsolHhandler 控制台输出ConsoleHandler consoleHandler = new ConsoleHandler();// 创建简单格式转换对象SimpleFormatter simpleFormatter = new SimpleFormatter();// 进行关联consoleHandler.setFormatter(simpleFormatter);logger2.addHandler(consoleHandler);// 配置日志具体级别logger2.setLevel(Level.ALL);consoleHandler.setLevel(Level.ALL);logger1.severe("severe");logger1.warning("warning");logger1.info("info");logger1.config("config");logger1.fine("fine");logger1.finer("finer");logger1.finest("finest");}
配置文件
我们可以找到默认的配置文件,并且把配置文件拿出来,进行分析
以上就是默认的,进行解释这个默认的配置:
# RootLogger 顶级父元素指定的默认处理器为:ConsoleHandler
handlers= java.util.logging.FileHandler# RootLogger 顶级父元素默认的日志级别为:ALL
.level= ALL# 向日志文件输出的 handler 对象
# 指定日志文件路径 /logs/java0.log
java.util.logging.FileHandler.pattern = /logs/java%u.log
# 指定日志文件内容大小
java.util.logging.FileHandler.limit = 50000
# 指定日志文件数量
java.util.logging.FileHandler.count = 1
# 指定 handler 对象日志消息格式对象
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
# 指定以追加方式添加日志内容
java.util.logging.FileHandler.append = true# 向控制台输出的 handler 对象
# 指定 handler 对象的日志级别
java.util.logging.ConsoleHandler.level = ALL
# 指定 handler 对象的日志消息格式对象
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
# 指定 handler 对象的字符集
java.util.logging.ConsoleHandler.encoding = UTF-8# 指定日志消息格式
java.util.logging.SimpleFormatter.format = %4$s: %5$s [%1$tc]%n
我们还可以在配置自己的处理器,在配置文件里面把默认的关掉。
# 自定义 Logger 使用
com.handlers = java.util.logging.ConsoleHandler
com.level = CONFIG# 关闭默认配置
com.itheima.useParentHanlders = false
写了以上的配置之后,之后使用这个配置文件,那么就会使用我们自定义的东西。
// 加载自定义配置文件@Testpublic void testLogProperties()throws Exception{// 读取配置文件,通过类加载器InputStream ins = JULTest.class.getClassLoader().getResourceAsStream("logging.properties");// 创建LogManagerLogManager logManager = LogManager.getLogManager();// 通过LogManager加载配置文件logManager.readConfiguration(ins);// 创建日志记录器Logger logger = Logger.getLogger("com");logger.severe("severe");logger.warning("warning");logger.info("info");logger.config("config");logger.fine("fine");logger.finer("finer");logger.finest("finest");Logger logger2 = Logger.getLogger("test");logger2.severe("severe test");logger2.warning("warning test");logger2.info("info test");logger2.config("config test");logger2.fine("fine test");logger2.finer("finer test");logger2.finest("finest test");}
使用方法总结
java日志框架(一)JUL 学习 ,这个是什么,他在代码中如何使用,一篇文章讲清楚相关推荐
- 最牛逼的 Java 日志框架,还不学习。。。
最牛逼的 Java 日志框架,性能无敌,横扫所有对手- Logback 算是JAVA 里一个老牌的日志框架,从06年开始第一个版本,迭代至今也十几年了.不过logback最近一个稳定版本还停留在 20 ...
- Java日志框架之JUL(java util logging)详解
定义: JUL全称Java util logging,是java原生的日志框架,使用时不需要另外引入第三方类库,相对于其他框架使用方便,学习简单,能够在小型的应用中灵活使用. 架构: Applicat ...
- Java日志框架学习--JUL和Log4j--上
Java日志框架学习--JUL和Log4j--上 引言 日志框架 市面流行的日志框架 日志门面和日志框架的区别 JUL JUL简介 JUL组件介绍 实际使用 Logger之间的父子关系 默认配置文件位 ...
- 学习Java日志框架之——搞懂JUL(java.util.logging)
文章目录 系列文章目录 一.JUL简介 二.JUL组件介绍 三.代码实例 1.入门案例 2.日志级别 (1)默认日志级别源码分析 3.自定义日志级别 4.将日志输出到文件中 5.Logger的父子关系 ...
- java日志框架JUL、JCL、Slf4j、Log4j、Log4j2、Logback 一网打尽
为什么程序需要记录日志 我们不可能实时的24小时对系统进行人工监控,那么如果程序出现异常错误时要如何排查呢?并且系统在运行时做了哪些事情我们又从何得知呢?这个时候日志这个概念就出现了,日志的出现对系统 ...
- Java日志框架 -- 日志框架介绍、日志门面技术、JUL日志(JUL架构、JUL入门示例、JUL日志级别、JUL日志的配置文件)
1. 日志的概念 日志文件是用于记录系统操作事件的文件集合,可分为事件日志和消息日志.具有处理历史数据.诊断问题的追踪以及理解系统的活动等重要作用. 2. Java日志框架 问题: 控制日志输出的内容 ...
- Java日志框架学习笔记
Java日志框架学习笔记 文章目录 0 主流Java日志框架 1 log4j 1.1 理论知识 1.1.1 Loggers日志记录器 1.1.2 Appenders输出端 1.1.3 Layout日志 ...
- 学习Java日志框架之——搞懂日志门面(JCL+SLF4J)
文章目录 系列文章目录 一.什么是日志门面 1.门面模式(外观模式) 2.日志门面 二.了解JCL 1.JCL组件结构 2.JCL案例 (1)JCL默认实现 (2)导入log4j测试原有程序 三.SL ...
- Java 日志框架 JUL
文章目录 日志文件的重要性 常见日志框架 什么是JUL JUL架构介绍 入门案例 JUL日志级别 Logger之间的父子关系 日志的配置文件 日志原理解析 日志文件的重要性 做开发最怕的就是线上系统出 ...
最新文章
- java开源springboot项目_springBoot 搭建web项目(前后端分离,附项目源代码地址)...
- .NET Micro Framework动态调用C/C++底层代码(原理篇)
- JSP中base href=%=basePath%作用
- android之PackageManager简单介绍
- vue中搜索关键词,使文本标红
- 计算机核心配件是什么,计算机的核心是什么
- Log4net 日志使用介绍
- python 模块学习--Numpy
- endnote怎么改成中文版_毕业论文面对大量的参考文献标注,应该怎么办?(便捷整理的技巧和方法)...
- arduino智能浇花系统_创新成果 | 养花神器——智能浇花机
- Java学习笔记2.1.2 Java基本语法 - Java三种注释方式
- 11300001数据集配置错误_Power BI 中的数据刷新(二)
- 生新技能树单细胞GBM数据分析(SignleR以及Seurat 联合分析及细胞簇注释
- 3.Java垃圾回收机制面试题
- Strategy(策略)
- Dinky 0.6.2 已发布,优化 Flink 应用体验
- 长文详解材料阻燃性能试验方法
- 地图影像图数量存储大小精度推算
- NYOJ_170聪明的kk
- 也谈Eclipse未自动在gen目录下生成R.java
热门文章
- PMB-DCL 分子式:C36H45N3O10
- w7设置双显示器_如何在Win7桌面上为两个不同的显示器设置双屏幕? -win7多屏显示设置...
- goland创建一个不限长度的字节切片_关于Go切片,看这篇就够了
- 矩阵论: 第二章: 内积空间
- 无人机超远距离WiFi传输,CV5200无线通信模组,无线音视频传输方案
- 益和VA市场发展良好,产品稳定两增一减
- Matlab实现有向图的关联矩阵和邻接矩阵的转换
- 基于小浣熊漫画cms的python爬虫项目实战(一)
- 详解 Linux操作系统的目录结构
- 【财务】FMS财务管理系统---费用管理