Loggers
Loggers are used by applications and runtime components to capture message and trace events.
When situations occur that are significant either due to a change in state, for example when a server completes startup or because a potential problem is detected, such as a timeout waiting for a resource, a message is written to the logs. Trace events are logged in debugging scenarios, where a developer needs a clear view of what is occurring in each component to understand what might be going wrong. Logged events are often the only events available when a problem is first detected, and are used during both problem recovery and problem resolution.
Loggers are organized hierarchically. Each logger can have zero or more child loggers.
Loggers can be associated with a resource bundle. If specified, the resource bundle is used by the logger to localize messages that are logged to the logger. If the resource bundle is not specified, a logger uses the same resource bundle as its parent.
You can configure loggers with a level. If specified, the level is compared by the logger to incoming events. The events that are less severe than the level set for the logger are ignored by the logger. If the level is not specified, a logger takes on the level that is used by its parent. The default level for loggers is Level.INFO.
Loggers can have zero or more attached handlers. If
supplied, all events that are logged to the logger are passed to the attached handlers. Handlers
write events to output destinations such as log files or network sockets. When a logger finishes
passing a logged event to all of the handlers that are attached to that logger, the logger passes
the event to the handlers that are attached to the parents of the logger. This process stops if a
parent logger is configured not to use its parent handlers. Handlers in WebSphere Application Server are
attached to the root logger. Set the useParentHandlers logger property to false
to
prevent the logger from writing events to handlers that are higher in the hierarchy.
Loggers can have a filter. If supplied, the filter is invoked for each incoming event to tell the logger whether or not to ignore it.
Applications interact directly with loggers to log events. To obtain or create a logger, a call is made to the Logger.getLogger method with a name for the logger. Typically, the logger name is either the package qualified class name or the name of the package that the logger is used by. The hierarchical logger namespace is automatically created by using the dots in the logger name. For example, the com.ibm.websphere.ras logger has a com.ibm.websphere parent logger, which has a com.ibm parent. The parent at the top-level of the hierarchy is referred to as the root logger. This root logger is created during initialization. The root logger is the parent of the com logger.
Loggers are structured in a hierarchy. Every logger, except the root logger, has one parent. Each logger can also have 0 or more children. A logger inherits log handlers, resource bundle names, and event filtering settings from its parent in the hierarchy. The logger hierarchy is managed by the LogManager function.
Loggers create log records. A log record is the container object for the data of an event. This object is used by filters, handlers, and formatters in the logging infrastructure.
The logger provides several sets of methods for generating log messages. Some log methods take only a level and enough information to construct a message. Other, more complex logp (log precise) methods support the caller in passing class name and method name attributes, in addition to the level and message information. The logrb (log with resource bundle) methods add the capability of specifying a resource bundle as well as the level, message information, class name, and method name. Using methods such as severe, warning, fine, finer, and finest you can log a message at a particular level. For more information on logging and how to use it in your applications read Using Java logging in an application. For a complete list of methods, see the java.util.logging documentation at http://docs.oracle.com/javase/1.4.2/docs/api/index.html.