Java学习笔记一Java 9新增的日志API

Java 9强化了原有的日志API,这套日志API只是定义了记录消息的最小API,开发者可将这些日志消息路由到各种主流的日志框架(如SLF4J、Log4J等),否则默认使用Java传统的java.util.logging日志API。这套API使用:调用System类的getLogger(String name)方法获取System.Logger对象;调用System.Logger对象的log()方法输出日志。
为了与传统java.util.logging日志级别、主流日志框架的级别兼容,Java 9定义了如下所示的日志级别:

Java 9日志级别 传统日志级别 说明
ALL ALL 最低级别,系统将会输出所有日志信息。因此将会生成非常多、非常冗余的日志信息
TRACE FINER 输出系统的各种跟踪信息,也会生成很多、很冗杂的日志信息
DEBUG FINE 输出系统的各种调试信息,会生成较多的日志信息
INFO INFO 输出系统内需要提示用户的提示信息,生成中等冗余的日志信息
WARNING WARNING 只输出系统内警告用户的警告信息,生成较少的日志信息
ERROR SEVERE 只输出系统发生错误的错误信息,生成很少的日志信息
OFF OFF 关闭日志输出
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;

public class LoggerTest {
    public static void main(String[] args) throws Exception {
        // 获取System.Logger对象
        System.Logger logger = System.getLogger("logtest");
        // 设置系统日志级别
        Logger.getLogger("logtest").setLevel(Level.FINE);
        // 设置使用a.xml保存日志记录
        Logger.getLogger("logtest").addHandler(new FileHandler("a.xml"));
        logger.log(System.Logger.Level.DEBUG, "debug信息");
        logger.log(System.Logger.Level.INFO, "info信息");
        logger.log(System.Logger.Level.ERROR, "error信息");
    }
}

在这里插入图片描述
日志级别,在开发阶段调试程序时,可能需要大量输出调式信息,在发布软件时,又希望关掉这些调试信息。此时就可通过日志来实现,只要将系统日志级别调高,所有低于该级别的日志信息就都会被自动关闭,如果将日志级别设为OFF,那么所有日志信息都会被关闭。

Java 9的日志API也支持国际化-System类除使用简单的getLogger(String name)方法获取System.Logger对象之外,还可以使用getLogger(String name, ResourceBundle bundle)方法来获取该对象,该方法需要传入一个国际化语言资源包,这样该Logger对象可根据key来输出国际化的日志信息。

        // 加载国际化资源包
        ResourceBundle rb = ResourceBundle.getBundle("logMess", Locale.getDefault(Locale.Category.FORMAT));
        // 获取System.Logger对象
        System.Logger logger = System.getLogger("logtest", rb);
        // 设置系统日志级别
        Logger.getLogger("logtest").setLevel(Level.INFO);
        // 设置使用a.xml保存日志记录
        Logger.getLogger("logtest").addHandler(new FileHandler("a.xml"));
        logger.log(System.Logger.Level.DEBUG, "debug");
        logger.log(System.Logger.Level.INFO, "info");
        logger.log(System.Logger.Level.ERROR, "error");
发布了134 篇原创文章 · 获赞 141 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/asmartkiller/article/details/105006152