HOWTO · Java

在 Java 中使用记录器

本文介绍如何在 Java 中使用记录器。

本页内容

在 Java 编程语言中,Logging 是一个 API,它允许用户追踪从特定类产生的错误。记录器通过添加时间戳和填充它的端点来帮助实时记录机制。API 有助于将事件跟踪作为日志的记录进行维护。这些记录有助于找到发生问题的根本原因,并在以后重新生成相同的事件。

本文向你展示了一种更好地利用 Java 日志的方法。

Java 中记录器的功能

记录器及其功能在下面的程序中进行了演示。

package log_file;

import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;

public class AddLoggerInFile {
  public static void main(String[] args) {
    Logger logger = Logger.getLogger("MyLog");
    FileHandler fileHandler;
    try {
      fileHandler = new FileHandler("src/main/resources/MyLogFile.txt");
      logger.addHandler(fileHandler);
      SimpleFormatter simpleFormatter = new SimpleFormatter();
      fileHandler.setFormatter(simpleFormatter);
      logger.info("Log to test");

    } catch (SecurityException e) {
      logger.info("Exception:" + e.getMessage());
      e.printStackTrace();
    } catch (IOException e) {
      logger.info("IO Exception:" + e.getMessage());
      e.printStackTrace();
    }
    logger.info("Hi In the main class");
  }
}

在上面的代码块中,记录器最初被实例化。

该类存在于 java.util.logging 包中。getLogger 是 Logger 类中存在的静态方法,如果系统中不存在具有给定名称的记录器,它会创建一个记录器。函数 else 返回现有的记录器实例(如果它已经存在)。

如果给定的名称是空值,则该函数将抛出 NullPointerException。一旦记录器实例被实例化,就会创建一个文件处理程序实例。

FileHandler 类存在于 java.util.logging 包中,专门设计和配置为处理使用 logger 实例打印的日志。构造函数 FileHandler 初始化处理程序以将信息写入给定的文件名。构造函数将输出文件的名称作为参数。

在上面的代码中,文件名提供了一个相对路径。文件中未定义大小,因为它可以扩展到日志进入的限制。当编译器在打开文件时遇到问题时,构造函数会抛出 IOException。如果安全管理器没有 LoggingPermission,则抛出 SecurityException,如果模式是空字符串,则抛出 IllegalArgumentException。

addHandler 方法映射文件处理程序以将日志消息接收到文件中。该函数是 void 返回类型,因为它不返回任何值。相反,它仅使用日志和事件。如果安全管理器没有足够的日志记录权限,它会抛出 SecurityException。

SimpleFormatter 实例被启动;该类也存在于 java.util.logging 包中。格式化程序允许使用 logging.SimpleFormatter.format 属性自动格式化日志。此属性允许日志消息采用定义的格式,从而保持一致性。

setFormatter 是一个在记录器实例上设置格式化程序的函数。info 是 Logger 类中的一个函数,用于将 INFO 日志消息打印到文件中。Level 类中可以存在各种日志级别。根据用途,我们可以使用 INFO、DEBUG、FINE、CONFIG 和 SEVERE 日志。

日志级别 是定义程序日志严重性的日志详细信息。这些级别有一些定义的数字和特定的含义。例如,SEVERE 的日志值为 1000,表示系统出现故障,必须立即处理。

当某些网络故障或数据库连接丢失时,就会发生严重性。同样,WARNING 级别的值为 900,表示系统中的潜在风险。

下面是在标准控制台输出和 MyLogFile.txt 文件中填充的输出。

输出:

Jul 04, 2021 12:05:29 AM log_file.AddLoggerInFile main
INFO: Log to test
Jul 04, 2021 12:05:29 AM log_file.AddLoggerInFile main
INFO: Hi In the main class