2.JUL

JUL

JUL简介

  1. JUL全称java util Logging是java原生的日志框架
  2. 使用时不需要另外引用第三方类库

JUL架构

在这里插入图片描述

  • Loggers:被称为记录器,应用程序通过获取Logger对象,调用其API来发布日志信息。Logger通常是应用程序访问日志系统的入口程序
  • Appenders:也被称为Handlers,每个Logger都会关联一组Handlers,Logger会将日志交给关联Handlers处理,由Hanlders负责将日志做记录。Handlers在此是一个抽象,其具体的实现决定了日志记录的位置可以是控制台,文件,网络上的其他日志服务或操作系统日志等。
  • Layouts:也被称之为Formatters,它负责对日志事件中的数据进行转换和格式化。Layouts决定了数据在一条日志记录中的最终形式。
  • Level:每条日志消息都有一个关联的日志级别。该级别粗略指导了日志消息的重要性和紧迫,可以将Level和Loggers,Appenders做关联以便于我们过滤消息。
  • Filters:过滤器,根据需要定制哪些信息会被记录,哪些信息会被放过。

JUL日志级别

日志级别是有int值的,比如info是800,WARNING是900

默认是info级别那么比info int值大的级别也会默认开启例如WARNING

  1. SEVERE——严重的问题造成了程序的终止
  2. WARNING——警告虽然问题不会造成程序的终止但也需要关注
  3. INFO——记录一些信息
  4. CONFIG——配置文件一些参数
  5. FINE——debug 日志记录
  6. FINER——debug 日志记录
  7. FINEST——debug 日志记录
  8. ALL——表示开启所有日志级别
  9. OFF——表示不开启所有日志级别

JUL的Logger具有父子关系

  • 根据包名来获取Logger对象
  • 最顶级的Logger对象是LogManager$RootLogger
  • java代码
 @Test
    public void test03(){
        //1.获取日志记录器对象
        Logger log1 = Logger.getLogger("cn.shanguoyu.log.jul.JULTest");
        Logger log2 = Logger.getLogger("cn.shanguoyu.log.jul");
        Logger log3 = Logger.getLogger("cn.shanguoyu.log");
        Logger log4 = Logger.getLogger("cn");
        System.out.println(log1.getParent()==log2);
        System.out.println(log2.getParent()==log3);
        System.out.println(log4.getParent());
    }

JUL自定义配置文件

  1. 不配置配置文件默认会去读取jdk中的logging.properties文件
  2. 自定义配置文件
handlers= java.util.logging.ConsoleHandler
.level= ALL
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.maxLocks = 100
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
  1. java代码
 @Test
    public void test04() throws IOException {
        //用类加载器读取配置文件
        InputStream is = JULTest.class.getClassLoader().getResourceAsStream("logging.properties");
        //获取LogManager
        LogManager logManager = LogManager.getLogManager();
        //读取配置文件
        logManager.readConfiguration(is);
        Logger log = Logger.getLogger("cn.shanguoyu.log.jul.JULTest");
        log.info("info");
        log.config("config");
        log.fine("fine");
        log.finer("finer");
        log.finest("finest");
        log.severe("severe");
        log.warning("warning");
    }

JUL配置文件详解

# RootLogger 顶级父元素指定的默认处理器为 ConsoleHandler
handlers= java.util.logging.ConsoleHandler
# RootLogger 顶级父元素默认的日志级别为: ALL
.level= ALL
#指定文件handler对象的 日志名格式 /logs/java0.log
java.util.logging.FileHandler.pattern = /logs/java%u.log
# 自定义Logger使用
cn.shanguoyu.handlers=java.util.logging.ConsoleHandler
cn.shanguoyu.level=CONFIG
#关闭默认配置
cn.shanguoyu.useParentHandlers=false

#日志追加还是覆盖 true是追加
java.util.logging.FileHandler.append=true
#指定日志文件内容大小
java.util.logging.FileHandler.limit = 50000
#指定日志文件数量
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.maxLocks = 100
#指定文件handler的日志消息格式化对象
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
#指定handler对象的日志级别
java.util.logging.ConsoleHandler.level = ALL
#指定handler对象的格式化器对象为 SimpleFormatter
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
#指定handler对象的字符集
java.util.logging.ConsoleHandler.encoding = UTF-8
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值