Chapter 3.
Logging

Logging is an important means of gaining insight into your application's runtime
behavior. OpenJPA provides a flexible logging system that integrates with many
existing runtime systems, such as application servers and servlet runners.

Warning

Logging can have a negative impact on performance. Disable verbose logging (such
as logging of SQL statements) before running any performance tests. It is
advisable to limit or disable logging for a production system. You can disable
logging altogether by setting the openjpa.Log property to
none.

1.
Logging Channels

Logging is done over a number of logging channels, each of
which has a logging level which controls the verbosity of
log messages recorded for the channel. OpenJPA uses the following logging
channels:

openjpa.Tool: Messages issued by the OpenJPA command line
and Ant tools. Most messages are basic statements detailing which classes or
files the tools are running on. Detailed output is only available via the
logging category the tool belongs to, such as openjpa.Enhance
for the enhancer (see Section 2, “
Enhancement
”) or
openjpa.MetaData for the mapping tool (see
Section 1, “
Forward Mapping
”). This logging category
is provided so that you can get a general idea of what a tool is doing without
having to manipulate logging settings that might also affect runtime behavior.

openjpa.MetaData: Details about the generation of metadata
and object-relational mappings.

openjpa.Runtime: General OpenJPA runtime messages.

openjpa.Query: Messages about queries. Query strings and any
parameter values, if applicable, will be logged to the TRACE
level at execution time. Information about possible performance concerns will be
logged to the INFO level.

openjpa.DataCache: Messages from the L2 data cache plugins.

openjpa.jdbc.JDBC: JDBC connection information. General JDBC
information will be logged to the TRACE level. Information
about possible performance concerns will be logged to the INFO
level.

openjpa.jdbc.SQL: This is the most common logging channel to
use. Detailed information about the execution of SQL statements will be sent to
the TRACE level. It is useful to enable this channel if you
are curious about the exact SQL that OpenJPA issues to the datastore.

When using the built-in OpenJPA logging facilities, you can enable SQL logging
by adding SQL=TRACE to your openjpa.Log
property.

OpenJPA can optionally reformat the logged SQL to make it easier to read. To
enable pretty-printing, add PrettyPrint=true to the
openjpa.ConnectionFactoryProperties property. You can control
how many columns wide the pretty-printed SQL will be with the
PrettyPrintLineLength property. The default line length is 60 columns.

While pretty printing makes things easier to read, it can make output harder to
process with tools like grep.