javalog-jul笔记

 

Jul执行流程

  1. 初始化Logger对象
  1. LogManager加载logging.properties配置
  2. 添加Logger到LogManager
  1. 从单例LogManager获取Logger
  2. 设置Lvel,指定日志记录LogRecord
  3. Filter提供日志级别以外更细粒度的控制
  4. Handle是用来处理日志输出的位置
  5. Formatter是用来格式化LogRecord的

JUL java util logging 是java原生的日志框架。

Jul快速入门

@Test
public void julTest(){
   
//1.获取日志记录器对象
   
Logger logger = Logger.getLogger("com.example.javalog.jul");
   
//2.日志记录输出
   
logger.info("hello");
   
//通用方法进行日志记录
   
logger.log(Level.INFO, "日志级别是info,他是枚举类");
   
//通过占位符输出变量
   
String name = "hwz";
    int
age = 20;
   
logger.log(Level.INFO, "用户信息为:{0}{1}", new Object[]{name, age});

}

日志级别

OFF   下面所有日志级别关闭

SEVERE (highest value)  最高级别,出现错误时使用

WARNING   警告信息

INFO   消息信息

CONFIG   配置信息

FINE   下面三个是debug日志信息

FINER

FINEST (lowest value)

ALL   上面所有级别开启

@Test

public void levelTest(){

    //1.获取日志记录器对象

    Logger logger = Logger.getLogger("com.example.javalog.jul");

    //2.日志记录输出

    logger.severe("severe");

    logger.warning("warning");

    logger.info("info");

    logger.config("config");

    logger.fine("fine");

    logger.finer("finer");

    logger.finest("finest");

    /*

        7 21, 2022 11:05:08 上午 com.example.javalog.jul levelTest

        严重: severe

        7 21, 2022 11:05:08 上午 com.example.javalog.jul levelTest

        警告: warning

        7 21, 2022 11:05:08 上午 com.example.javalog.jul levelTest

        信息: info

     */

}

Jul默认的日志级别是info

自定义日志级别

//自定义日志级别

@Test

public void logConfigTest() throws IOException {

    //1.获取日志记录器对象

    Logger logger = Logger.getLogger("com.example.javalog.jul");



    //关闭默认系统的配置

    logger.setUseParentHandlers(false);



    //自定义配置日志级别



    //创建consoleHandler  控制台日志输出

    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("C:\\Users\\hwz\\Desktop\\log\\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");



    /**

     * 721, 2022 12:17:28 下午 com.example.javalog.jul logConfigTest

     * 严重: severe

     * 721, 2022 12:17:28 下午 com.example.javalog.jul logConfigTest

     * 警告: warning

     * 721, 2022 12:17:28 下午 com.example.javalog.jul logConfigTest

     * 信息: info

     * 721, 2022 12:17:28 下午 com.example.javalog.jul logConfigTest

     * 配置: config

     * 721, 2022 12:17:28 下午 com.example.javalog.jul logConfigTest

     * 详细: fine

     * 721, 2022 12:17:28 下午 com.example.javalog.jul logConfigTest

     * 较详细: finer

     * 721, 2022 12:17:28 下午 com.example.javalog.jul logConfigTest

     * 非常详细: finest

     */

}

Logger对象的父子关系

//Logger对象的父子关系

@Test

public void logParentTest(){

    Logger logger1 = Logger.getLogger("icu.weizhan");

    Logger logger2 = Logger.getLogger("icu");



    //测试  logger1logger2的子对象

    System.out.println(logger1.getParent() == logger2)//true



    //logger2的父对象是LogManager$RootLogger  所有日志记录器的顶级父对象

    System.out.println(logger2.getParent()+"\nname:"+ logger2.getParent().getName());





    //关闭默认系统的配置

    logger2.setUseParentHandlers(false);



    //自定义配置日志级别



    //创建consoleHandler  控制台日志输出

    ConsoleHandler consoleHandler = new ConsoleHandler();



    //创建简单的格式转换对象

    SimpleFormatter simpleFormatter = new SimpleFormatter();



    //进行关联

    consoleHandler.setFormatter(simpleFormatter);

    logger2.addHandler(consoleHandler);



    //配置日志的具体级别

    logger2.setLevel(Level.ALL);

    consoleHandler.setLevel(Level.ALL);



    //2.日志记录输出

    logger1.severe("severe");

    logger1.warning("warning");

    logger1.info("info");

    logger1.config("config");

    logger1.fine("fine");

    logger1.finer("finer");

    logger1.finest("finest");



    /**

     * true

     * java.util.logging.LogManager$RootLogger@7f690630

     * name:

     * 721, 2022 12:53:41 下午 com.example.javalog.jul logParentTest

     * 严重: severe

     * 721, 2022 12:53:41 下午 com.example.javalog.jul logParentTest

     * 警告: warning

     * 721, 2022 12:53:41 下午 com.example.javalog.jul logParentTest

     * 信息: info

     * 721, 2022 12:53:41 下午 com.example.javalog.jul logParentTest

     * 配置: config

     * 721, 2022 12:53:41 下午 com.example.javalog.jul logParentTest

     * 详细: fine

     * 721, 2022 12:53:41 下午 com.example.javalog.jul logParentTest

     * 较详细: finer

     * 721, 2022 12:53:41 下午 com.example.javalog.jul logParentTest

     * 非常详细: finest

     */

}

logger1是logger2的子对象,所以logger1也会继承logger2的配置的日志级别

自定义配置文件方式

//自定义配置文件方式

@Test

public void propertiesLogTest() throws IOException {

    //读取配置文件,通过类加载器

    InputStream resourceAsStream = Jul.class.getClassLoader().getResourceAsStream("logging.properties");

    //创建LogManager

    LogManager logManager = LogManager.getLogManager();

    //通过创建LogManager加载配置文件

    logManager.readConfiguration(resourceAsStream);



    Logger logger = Logger.getLogger("test");



    //2.日志记录输出

    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("icu.weizhan")//自定义logger



    //2.日志记录输出

    logger2.severe("severe icu");

    logger2.warning("warning icu");

    logger2.info("info icu");

    logger2.config("config icu");

    logger2.fine("fine icu");

    logger2.finer("finer icu");

    logger2.finest("finest icu");

}

logging.properties文件

# RootLogger 顶级父元素默认处理器处理为ConsoleHandlerFileHandler

handlers= java.util.logging.FileHandler



# 日志级别

.level= ALL



# 自定义Logger使用

icu.weizhan.handlers = java.util.logging.ConsoleHandler

icu.weizhan.level = CONFIG



# 关闭默认配置

icu.weizhan.UseParentHandlers = false





# 日志文件存放位置

# 日志文件中日志最大条数

# 日志文件数量

java.util.logging.FileHandler.pattern = C:/Users/hwz/Desktop/log/java%u.log

java.util.logging.FileHandler.limit = 50000

java.util.logging.FileHandler.count = 1



# xml格式

java.util.logging.FileHandler.maxLocks = 100

java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter

# 以追加的方式添加日志内容

java.util.logging.FileHandler.append = true



#向控制台输出的handler对象

#指定handler对象的日志级别

java.util.logging.ConsoleHandler.level = ALL

#指定handler对象的日志消息格式对象XMLFormatter

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值