Java Logging: Overview
In this text I will try to give you an overview of the
Hopefully it will be easier to understand the individual components once you understand
the big picture. Many of the concepts described here are also covered in more details
in subsequent texts.
Here is an overview diagram of how the Java Logging API works:
|An overview of the core components in the Java Logging API|
All logging is done via a
Logger instance. Loggers gather the data to be logged into a
LogRecord is then forwarded to a
Handler determines what to
do with the
LogRecord. For instance, the
LogRecord can be written to disk, or sent over
the network to a surveillance system.
Handler's can pass the
LogRecord through a
which determines whether the
LogRecord should be forwarded or not.
Handler can also use a
Formatter to format the
LogRecord as a string before it is sent
to the external disk or system.
Whenever a message is logged, this message is logged with a certain log level. The level is an integer which determines how important the message is. The higher the number (level) is, the more important the message is.
Logger can have a minimum log level set on it, which determines if the message is forwarded
Handler or not. This is not a
Filter, even though it has the same effect.
For instance, all messages below a certain level can be suppressed.
Logger instances are organized into a hierarchy. A
Logger further down in the hierarchy
will forward messages logged to it, to its ancestors in the hierarchy. Thus, log levels
and messages can be filtered or switched on and off for entire branches of the
Logger hierarchy at a time.
LogManager is a component that is not displayed in the diagram at the top of this text.
LogManager holds the
Logger hierarchy, and also a global logging configuration,
which can be read from a file. The
LogManager is also covered in more detail in its own text.