在 Java 中使用记录器

Rashmi Patidar 2023年10月12日
在 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 包中。getLoggerLogger 类中存在的静态方法,如果系统中不存在具有给定名称的记录器,它会创建一个记录器。函数 else 返回现有的记录器实例(如果它已经存在)。

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

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

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

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

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

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

日志级别 是定义程序日志严重性的日志详细信息。这些级别有一些定义的数字和特定的含义。例如,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
作者: Rashmi Patidar
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn