The Logger Agent, available from the RMA's tools
menu, allows viewing log messages generated by other agents. There are three
main aspects described below. First there is a brief description of the
Logger Agent's functionality. The next section specifies how to customize
JADE and Jadex agents to generate observable log messages and finally it is
shown how to use the Logger Agent to view log messages from observed
agents.
The implementation of the Logger Agent is based on The
Java™ Logging API (
java.util.logging
). Agents make logging calls on
Logger
objects. These objects allocate
LogRecord
objects which are passed to notifier agents via special
Handler
objects on demand. The notifier agents themselves are
responsible for sending an appropriate ACL message to the Logger Agent for
displaying the log message.
Both loggers and handlers may use logging levels to decide if they are interested in a particular log record. The level gives a rough guide to the importance and urgency of a log message. The Level class defines seven standard log levels, ranging from FINEST (the lowest priority) to SEVERE (the highest priority).
Loggers are organized in a hierarchical namespace and child loggers may inherit some logging properties from their parents in the namespace. Loggers are normally named entities, using dot-separated names such as java package names, but for the agent's purpose they are just named like the agents themselves. Therefore the only parent from which the loggers may inherit logging properties is the root logger (named ""). But Loggers may also be configured to ignore handlers higher up the tree.
There is a default logging configuration that ships with the Java Runtime Environment, and it can be overridden by software vendors, system admins, and end users. The default configuration establishes a single handler on the root logger for sending output to the console with log levels INFO and higher.
The Logger class provides a large set of methods for generating log messages. For convenience, there are methods for each logging level, named after the logging level. There are also methods that take an explicit source class name and source method name to quickly locate the source of any given logging message. Methods without it make a "best effort" to determine which class and method has called it and will add this information into the log record. For further details on Java™ Logging APIs see the corresponding documentation.