这里写目录标题

  • 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 学习 ,这个是什么,他在代码中如何使用,一篇文章讲清楚相关推荐

  1. 最牛逼的 Java 日志框架,还不学习。。。

    最牛逼的 Java 日志框架,性能无敌,横扫所有对手- Logback 算是JAVA 里一个老牌的日志框架,从06年开始第一个版本,迭代至今也十几年了.不过logback最近一个稳定版本还停留在 20 ...

  2. Java日志框架之JUL(java util logging)详解

    定义: JUL全称Java util logging,是java原生的日志框架,使用时不需要另外引入第三方类库,相对于其他框架使用方便,学习简单,能够在小型的应用中灵活使用. 架构: Applicat ...

  3. Java日志框架学习--JUL和Log4j--上

    Java日志框架学习--JUL和Log4j--上 引言 日志框架 市面流行的日志框架 日志门面和日志框架的区别 JUL JUL简介 JUL组件介绍 实际使用 Logger之间的父子关系 默认配置文件位 ...

  4. 学习Java日志框架之——搞懂JUL(java.util.logging)

    文章目录 系列文章目录 一.JUL简介 二.JUL组件介绍 三.代码实例 1.入门案例 2.日志级别 (1)默认日志级别源码分析 3.自定义日志级别 4.将日志输出到文件中 5.Logger的父子关系 ...

  5. java日志框架JUL、JCL、Slf4j、Log4j、Log4j2、Logback 一网打尽

    为什么程序需要记录日志 我们不可能实时的24小时对系统进行人工监控,那么如果程序出现异常错误时要如何排查呢?并且系统在运行时做了哪些事情我们又从何得知呢?这个时候日志这个概念就出现了,日志的出现对系统 ...

  6. Java日志框架 -- 日志框架介绍、日志门面技术、JUL日志(JUL架构、JUL入门示例、JUL日志级别、JUL日志的配置文件)

    1. 日志的概念 日志文件是用于记录系统操作事件的文件集合,可分为事件日志和消息日志.具有处理历史数据.诊断问题的追踪以及理解系统的活动等重要作用. 2. Java日志框架 问题: 控制日志输出的内容 ...

  7. Java日志框架学习笔记

    Java日志框架学习笔记 文章目录 0 主流Java日志框架 1 log4j 1.1 理论知识 1.1.1 Loggers日志记录器 1.1.2 Appenders输出端 1.1.3 Layout日志 ...

  8. 学习Java日志框架之——搞懂日志门面(JCL+SLF4J)

    文章目录 系列文章目录 一.什么是日志门面 1.门面模式(外观模式) 2.日志门面 二.了解JCL 1.JCL组件结构 2.JCL案例 (1)JCL默认实现 (2)导入log4j测试原有程序 三.SL ...

  9. Java 日志框架 JUL

    文章目录 日志文件的重要性 常见日志框架 什么是JUL JUL架构介绍 入门案例 JUL日志级别 Logger之间的父子关系 日志的配置文件 日志原理解析 日志文件的重要性 做开发最怕的就是线上系统出 ...

最新文章

  1. java开源springboot项目_springBoot 搭建web项目(前后端分离,附项目源代码地址)...
  2. .NET Micro Framework动态调用C/C++底层代码(原理篇)
  3. JSP中base href=%=basePath%作用
  4. android之PackageManager简单介绍
  5. vue中搜索关键词,使文本标红
  6. 计算机核心配件是什么,计算机的核心是什么
  7. Log4net 日志使用介绍
  8. python 模块学习--Numpy
  9. endnote怎么改成中文版_毕业论文面对大量的参考文献标注,应该怎么办?(便捷整理的技巧和方法)...
  10. arduino智能浇花系统_创新成果 | 养花神器——智能浇花机
  11. Java学习笔记2.1.2 Java基本语法 - Java三种注释方式
  12. 11300001数据集配置错误_Power BI 中的数据刷新(二)
  13. 生新技能树单细胞GBM数据分析(SignleR以及Seurat 联合分析及细胞簇注释
  14. 3.Java垃圾回收机制面试题
  15. Strategy(策略)
  16. Dinky 0.6.2 已发布,优化 Flink 应用体验
  17. 长文详解材料阻燃性能试验方法
  18. 地图影像图数量存储大小精度推算
  19. NYOJ_170聪明的kk
  20. 也谈Eclipse未自动在gen目录下生成R.java

热门文章

  1. PMB-DCL 分子式:C36H45N3O10
  2. w7设置双显示器_如何在Win7桌面上为两个不同的显示器设置双屏幕? -win7多屏显示设置...
  3. goland创建一个不限长度的字节切片_关于Go切片,看这篇就够了
  4. 矩阵论: 第二章: 内积空间
  5. 无人机超远距离WiFi传输,CV5200无线通信模组,无线音视频传输方案
  6. 益和VA市场发展良好,产品稳定两增一减
  7. Matlab实现有向图的关联矩阵和邻接矩阵的转换
  8. 基于小浣熊漫画cms的python爬虫项目实战(一)
  9. 详解 Linux操作系统的目录结构
  10. 【财务】FMS财务管理系统---费用管理