专注Java教育14年 全国咨询/投诉热线:444-1124-454
星辉LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java日志记录详解

Java日志记录详解

更新时间:2022-06-02 09:58:39 来源:星辉 浏览3236次

在本教程中,星辉小编将借助示例了解 Java Logging 及其各种组件。

Java 允许我们通过日志记录过程创建和捕获日志消息和文件。

在 Java 中,日志记录需要框架和 API。Java 在包中有一个内置的日志框架java.util.logging。

我们还可以使用 Log4j、Logback 等第三方框架进行日志记录。

Java 日志组件

下图展示了 Java Logging API ( java.util.logging) 的核心组件和控制流程。

1. 记录器

该类Logger提供了日志记录方法。我们可以从类中实例化对象Logger并调用它的方法来记录日志。

让我们举个例子。

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

类的getLogger()方法Logger用于查找或创建新的Logger. 字符串参数定义记录器的名称。

在这里,这将创建一个新对象或返回同名Logger的现有对象。LoggerLogger在当前类之后使用定义 a 是一种惯例class.getName()。

Logger logger = Logger.getLogger(MyClass.class.getName());

每个日志级别都有一个整数值来确定它们的严重性,除了两个特殊日志级别OFF和ALL.

记录消息

默认情况下,始终记录前三个日志级别。要设置不同的级别,我们可以使用以下代码:

logger.setLevel(Level.LogLevel);
// example
logger.setLevel(Level.FINE);

在此示例中,仅将级别FINE和高于它的级别设置为记录。所有其他日志消息都将被删除。

现在要记录一条消息,我们使用该log()方法。

logger.log(Level.LogLevel, "log message");
// example
logger.log(Level.INFO, "This is INFO log level message");

有一些用于在所需级别进行日志记录的速记方法。

logger.info( "This is INFO log level message");
logger.warning( "This is WARNING log level message");

所有通过设置日志级别的日志请求然后转发到LogRecord。

2.过滤器

过滤器(如果存在)确定是否应转发LogRecord 。顾名思义,它根据特定标准过滤日志消息。

如果LogRecord通过了指定的标准,它只会从记录器传递到日志处理程序,并从日志处理程序传递到外部系统。

// set a filter
logger.setFilter(filter);
// get a filter
Filter filter = logger.getFilter();

3.处理程序(Appenders)

日志处理程序或附加程序接收LogRecord并将其导出到各种目标。

处理程序可以将LogRecord传递给过滤器,以再次确定它是否可以转发到外部系统。

要添加新的处理程序,我们使用以下代码:

logger.addHandler(handler);
// example
Handler handler = new ConsoleHandler();
logger.addHandler(handler);

要删除处理程序,我们使用以下代码:

logger.removeHandler(handler);
// example
Handler handler = new ConsoleHandler();
logger.addHandler(handler);
logger.removeHandler(handler);

一个记录器可以有多个处理程序。要获取所有处理程序,我们使用以下代码:

Handler[] handlers = logger.getHandlers();

4.格式化程序

处理程序还可以使用Formatter将LogRecord对象格式化为字符串,然后再将其导出到外部系统。

我们可以使用以下代码来格式化处理程序:

// formats to string form
handler.setFormatter(new SimpleFormatter());
// formats to XML form
handler.setFormatter(new XMLFormatter());

日志管理器

LogManager对象跟踪全局日志记录信息。它读取并维护日志记录配置和记录器实例。

日志管理器是一个单例,这意味着它只有一个实例被实例化。

要获取日志管理器实例,我们使用以下代码:

LogManager manager = new LogManager();

日志记录的优势

以下是使用 Java 登录的一些优点。

有助于监控程序的流程

有助于捕获可能发生的任何错误

为问题诊断和调试提供支持

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>