快看:JUL是什么?java原生日志框架JUL源码

发布时间:   来源:CSDN  


(资料图片)

JUL简介

JUL全程 Java Util Logging,它是java原生的日志框架,使用时不需要另外引用第三方的类库,相对其他的框架使用方便,学习简单,主要是使用在小型应用中。

代码实现

package com.log;import org.junit.Test;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.InputStream;import java.util.logging.*;public class JULTest {    @Test    public void test01() {        Logger logger = Logger.getLogger("com.log");        Logger logger2 = Logger.getLogger("com.log.JULTest");        //logger 是 logger 的父,继承它的配置        //RootLogger作为所有Logger的父Logger,getName为空//        System.out.println("logger 名称: "+ logger.getName()+" 它的的父 :"+logger.getParent());        //取消与父类关联        //参数设置为false,我们打印日志的方式就不会按照父logger默认的方式去进行操作        logger.setUseParentHandlers(false);//        String name = "zs";//        int age = 23;//        logger.log(Level.INFO,"学生的姓名:{0},年龄:{1}",new Object[]{name,age});/*        日志的级别(通过源码查看,非常简单)        SEVERE : 错误 --- 最高级的日志级别        WARNING : 警告        INFO : (默认级别)消息        CONFIG : 配置        FINE : 详细信息(少)        FINER : 详细信息(中)        FINEST : 详细信息 (多) --- 最低级的日志级别        每个级别对应一个数字        SEVERE 1000        WARNING 900        ...        FINEST 300        两个特殊的级别(通过控制数字来控制日志输出)        比如设置为500,则输出日志级别在500以上的日志        OFF 可用来关闭日志记录      Integer.MAX_VALUE        ALL 启用所有消息的日志记录   Integer.MIN_VALUE*/        //处理器Handler        //在此我们使用的是控制台日志处理器,取得处理器对象        ConsoleHandler handler = new ConsoleHandler();        //创建日志格式化组件对象        SimpleFormatter formatter = new SimpleFormatter();        //在处理器中设置输出格式        handler.setFormatter(formatter);        //在记录器中添加处理器        logger.addHandler(handler);        //设置日志的打印级别        //此处必须将日志记录器和处理器的级别进行统一的设置,才会达到日志显示相应级别的效果        logger.setLevel(Level.FINE);        handler.setLevel(Level.FINE);        logger.severe("logger severe 信息");        logger.warning("logger warning 信息");        logger.config("logger config 信息");        logger.fine("logger fine 信息");        logger.finer("logger finer 信息");        logger.finest("logger finest 信息");        logger2.severe("logger2 severe 信息");        logger2.warning("logger2 warning 信息");        logger2.config("logger2 config 信息");        logger2.fine("logger2 fine 信息");        logger2.finer("logger2 finer 信息");        logger2.finest("logger2 finest 信息");    }}

使用配置文件

#RootLogger(根logger)使用的处理器handlers= java.util.logging.ConsoleHandler#RootLogger默认的日志级别.level= INFO#文件处理器属性设置#输出日志文件路径java.util.logging.FileHandler.pattern = %h/java%u.log#输出日志文件大小限制(50000字节)java.util.logging.FileHandler.limit = 50000#输出日志文件数量java.util.logging.FileHandler.count = 1#输出日志文件格式java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter#------------------------------#自定义Loggercom.log.handlers = java.util.logging.FileHandler#自定义级别com.log.level = CONFIG#屏蔽父类com.log.UseParentHandlers = False#----------------------------------#控制器日志输出#控制器日志输出级别java.util.logging.ConsoleHandler.level = INFO#控制器日志输出格式java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter#可将日志级别设置在某个包下#com.xyz.foo.level = SEVERE

//    使用配置文件    @Test    public void test02() throws Exception {//        默认配置文件地址  jdk\jre\lib\logging.properties        InputStream input = new FileInputStream("src/main/java/com/log/logging.properties");        //取得日志管理器对象        LogManager logManager = LogManager.getLogManager();        //读取自定义的配置文件        logManager.readConfiguration(input);        Logger logger = Logger.getLogger("com.JULTest");        logger.severe("severe信息");        logger.warning("warning信息");        logger.info("info信息");        logger.config("config信息");        logger.fine("fine信息");        logger.finer("finer信息");        logger.finest("finest信息");        //文件日志处理器        FileHandler handler = new FileHandler("src/main/java/com/log/myLogTest.log");        SimpleFormatter formatter = new SimpleFormatter();        handler.setFormatter(formatter);        logger.addHandler(handler);        //也可以同时在控制台和文件中进行打印        ConsoleHandler handler2 = new ConsoleHandler();        handler2.setFormatter(formatter);        logger.addHandler(handler2); //可以在记录器中同时添加多个处理器        logger.setLevel(Level.ALL);        handler.setLevel(Level.ALL);        handler2.setLevel(Level.CONFIG);        logger.severe("severe信息");        logger.warning("warning信息");        logger.info("info信息");        logger.config("config信息");        logger.fine("fine信息");        logger.finer("finer信息");        logger.finest("finest信息");    }

相关文章Related

返回栏目>>