Logging in PL/Java
PL/Java uses the standard java.util.logging.Logger Hence, you can write things like:
Logger.getAnonymousLogger().info( "Time is " + new Date(System.currentTimeMillis()));
At present, the logger is hardwired to a handler that maps the state of
the PostgreSQL configuration setting
log_min_messages to a valid Logger level
and that outputs all messages using the backend function
Importantly, Java’s Logger methods can quickly discard any message logged at a
finer level than the one that was mapped from PostgreSQL’s setting at the time
PL/Java was first used in the current session. Such messages never even get
as far as
ereport(), even if the PostgreSQL setting is changed later.
So, if expected messages from Java code are not showing up, be sure that the
setting in PostgreSQL, at the time of PL/Java’s first use in the session, is
fine enough that Java will not throw the messages away. Once PL/Java has
started, the settings can be changed as desired and will control, in the
usual way, what
ereport does with the messages PL/Java delivers to it.
Through PL/Java 1.5.0, only the
log_min_messages setting is used to set
that Java cutoff level. Starting with 1.5.1, the cutoff level in Java is set
(still only once at PL/Java startup) based on the finer of
The following mapping applies between the Logger levels and the PostgreSQL backend levels:
See [[Thoughts on logging]] for likely future directions in this area.