The Faban driver framework utilizes the standard JavaSE logging facilities in the package java.util.logging and provides all the flexibility associated with that facility. Log targets can be configured to write to different files or network ports. If used with the Faban harness, all logging information will get sent back to the harness.
The following table shows the J2SE 1.4 configurable log levels and what is logged at certain levels:
Level |
Description |
---|---|
SEVERE |
Exception messages and stack traces |
WARNING |
|
INFO |
General state of the driver and other informational messages |
CONFIG |
Messages showing benchmark configurations and driver annotations |
FINE |
Detailed informational messages that are not of general interest |
FINER |
Debugging information |
FINEST |
Detailed or high volume debugging information |
We suggest the driver implementation to follow the same standards but this is not enforced by the driver.
The driver framework logs all failures that occur while reading the configuration files, reading the benchmark definition, benchmark driver, benchmark operation, and all other annotations. It also logs exceptions caused by failed operations where the driver framework catches the exceptions thrown. Finally, exceptions may be logged for failures in the driver framework itself. Please report such exceptions to the Faban team.
Moreover, the driver framework also logs configuration information, driver states of interest, and other information at the levels defined in the preceding table.
While the driver implementation may create it's own logger, we recommend using the logger provided by the driver framework. The driver implementation may obtain its logger by calling the getLogger() method on the DriverContext object. We also suggest following the same standard for the log levels to reduce confusions with log levels.
The name of the logger provided by the driver framework is always the fully qualified class name of the driver implementation appended with the global thread executing the driver instance in question. For example, if the driver implementation class is sample.MyDriver then the name of the logger for the first thread is “sample.MyDriver.0”. Using this naming convention, we can set the log target of the driver implementation as desired by using the standard J2SE logging properties file. By default, this log target is the same as the driver framework logging.
The driver framework actually does not cover logging of the benchmark application. But whenever possible and reasonable, we also suggest using the J2SE1.4 logging facilities for logging exceptions and messages the application. The log target should be configured so that the harness can receive, display, and record log messages in the same results directory as the harness and driver logs, thus keeping one centralized repository for all information regarding a benchmark run.
The driver framework establishes two log targets. The first being the console target. The second target is configurable and can vary between a local log file or a socket connection to a log server which will again log it to a central log file. The Faban harness includes such a log server and configures the driver logging accordingly so that all messages when run from the Faban harness get logged to the Faban harness' log server.
The console target logs messages of levels INFO
and higher while the file (or network) target logs all loggable
messages. Detailed messages not found on the console can be easily
viewed in the log file.