English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java Grund教程

Java Flow Control

Java Arrays

Java Object-Oriented (I)

Java Object-Oriented (II)

Java Object-Oriented (III)

Java Ausnahmebehandlung

Java List

Java Queue (Queue)

Java Map Collections

Java Set Collections

Java Input/Output (I/O)

Java Reader/Writer

Other Java Topics

Java Logging

In this tutorial, we will learn Java logging and its various components through examples.

Java allows us to create and capture log messages and files through the logging process.

In Java, logging requires frameworks and APIs. Java has an integrated logging framework in the java.util.logging package.

We can also use third-party frameworks (such as Log4j, Logback, etc.) are used for logging.

Java log components

The following diagram shows the core components and specified process of the Java Logging API (java.util.logging).

Java logging flowchart

1.Logger

The Logger class provides logging methods. We can instantiate an object from the Logger class and call its methods to log.

Let's take an example.

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

The getLogger() method of the Logger class is used to find or create a new Logger. The string parameter defines the name of the logger.

Here, this will create a new Logger object or return a Logger object with the same name.

By convention, a Logger is defined after the class.getName() in the current class.

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

注意:If the passed name is null, this method will throw a NullPointerException.

Each Logger has a level that determines the importance of log messages. There is7Basic log levels:

Log levels (in descending order)Using
SEVERESevere failures
WARNING

Warning messages, potential issues

INFORoutine runtime information
CONFIGConfiguration information
FINE

Normal developer information (trace messages)

FINER

Detailed developer information (trace messages)

FINEST

Highly detailed developer information (trace messages)

OFF

Disable logging for all levels (do not capture any content)

ALL

Enable logging for all levels (capture all content)

Each log level has an integer value used to determine its severity, except for the two special log levels OFF and ALL.

Log message

By default, the first three log levels are always logged. To set other levels, we can use the following code:

logger.setLevel(Level.LogLevel);
// 示例
logger.setLevel(Level.FINE);

In this example, only Level.FINE and above levels are set for logging. Delete all other log messages.

Now we need to log a log message, we use the log() method.

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

有一些用于记录所需级别的速记方法。

logger.info( "这是INFO日志级别的消息");
logger.warning( "这是WARNING日志级别的消息");

然后,已通过设置的日志级别的所有日志请求都将转发到LogRecord

注意:如果一个日志记录器的级别被设置为null,那么它的级别将从其父继承,以此类推。

2.筛选器(Filter)

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

如果LogRecord通过指定的条件,则仅从记录器传递到日志处理程序,并从日志处理程序传递到外部系统。

// 设置filter
logger.setFilter(filter);
// 获取 filter
Filter filter = logger.getFilter();

3.处理程序(输出源)

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

Java SE提供了5个内置处理程序:

处理程序Using
StreamHandler

写入OutputStream

ConsoleHandler写入控制台
FileHandler写入文件
SocketHandler

写入到远程TCP端口

MemoryHandler写入内存

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

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

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

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

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

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

Handler[] handlers = logger.getHandlers();

4.格式化程序(Formatter)

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

Java SE具有两个内置的Formatter:

FormatterUsing
SimpleFormatter

Format LogRecord as string

XMLFormatter

Format LogRecord as XML format

We can use the following code to format the handler:

// Formatted into string form
handler.setFormatter(new SimpleFormatter());
// Formatted into XML format
handler.setFormatter(new XMLFormatter());

Logger Manager

Log ManagementGlobal records of information about object tracking. It reads and maintains log record configurations and logger instances.

The logger manager is a singleton, which means only one instance is instantiated.

To obtain the instance of the logger manager, we use the following code:

LogManager manager = new LogManager();

Advantages of Logging

Here are some advantages of using Java logging.

  • Helps monitor the program's flow

  • Helps capture any errors that may occur

  • Supports problem diagnosis and debugging