栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

javalog-jul笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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");

    

}

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");



    

}

Logger对象的父子关系

//Logger对象的父子关系

@Test

public void logParentTest(){

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

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



    //测试  logger1是logger2的子对象

    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");



    

}

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 顶级父元素默认处理器处理为ConsoleHandler,FileHandler

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1024651.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号