You can do logging in Vaadin application using the standard
java.util.logging facilities. Configuring logging is as
easy as putting a file named logging.properties in the
default package of your Vaadin application. This file is read by the
Logger class when a new instance of it is initialize.
For logging Vaadin applications deployed in Apache Tomcat, you do not need
to do anything special to log to the same place as Tomcat itself. If you
need to write the Vaadin application related messages elsewhere, just add
a custom logging.properties file to the default
package of your Vaadin application.
If you would like to pipe the log messages through another logging solution, see the section called “Piping to Log4j using SLF4J” below.
Liferay mutes logging through java.util.logging by
default. In order to enable logging, you need to add a
logging.properties file of your own to the default
package of your Vaadin application. This file should define at least one
destination where to save the log messages.
You can also log through SLF4J, which is used in and bundled with Liferay. Follow the instructions in the section called “Piping to Log4j using SLF4J”.
Piping output from java.util.logging to Log4j is easy
with SLF4J (http://slf4j.org/). The basic way to
go about this is to add the SLF4J JAR file as well as the
jul-to-slf4j.jar file, which implements the bridge
from java.util.logging, to SLF4J. You will also need to
add a third logging implementation JAR file, that is,
slf4j-log4j12-x.x.x.jar, to log the actual messages
using Log4j. For more info on this, please visit the SLF4J site.
In order to get the java.util.logging to SLF4J
bridge installed, you need to add the following snippet of code to your
Application class at the very top:
static {
SLF4JBridgeHandler.install();
}
This will make sure that the bridge handler is installed and working before Vaadin starts to process any logging calls.
This can seriously impact on the cost of disabled logging statements (60-fold increase) and a measurable impact on enabled log statements (20% overall increase). However, Vaadin doesn't log very much, so the effect on performance will be negligible.
The pattern for logging in the core of Vaadin and in server-side add-ons is that you register a static final logger for each class that does logging, and then just use this logger. For example:
public class MyClass {
private static final Logger logger =
Logger.getLogger(MyClass.class.getName());
public void myMethod() {
try {
// do something that might fail
} catch (Exception e) {
logger.log(Level.SEVERE, "FAILED CATASTROPHICALLY!", e);
}
}
}