Portlets can write message and trace information
to log files,
which are maintained in the wp_profile_root/logs/WebSphere_Portal directory.
The log files help the portal administrator investigate portlet errors
and
special conditions and help the portlet developer test and debug portlets.
The PortletContext object in the standard portlet API
includes a log()
method. The Hello User example shows
how
to log a message when exceptions are caught. Figure 1. Logging
error messages in Hello User example
public void processAction(ActionRequest request, ActionResponse response)
throws PortletException, IOException{
PortletContext context = getPortletContext();
try{
String save = request.getParameter("save");
if (save != null){
PortletPreferences prefs = request.getPreferences();
prefs.setValue("userName",request.getParameter("username"));
prefs.store();
}
}
catch ( IOException ioe ){
context.log("An IO error occurred when trying to save the name.");
}
catch ( PortletException pe ) {
context.log("A portlet exception was thrown when trying to save the name.");
}
}
The IBM Portlet API provides the PortletLog class,
which has methods to write specific types of message and trace information
to the logs.
debug() - for trace information
info()
- for informational messages.
error() - for error messages.
warn() - for warning messages.
If an IBM portlet
needs to access the portlet log multiple times in a
method, it is good idea to assign the log reference to a variable,
for example:
private PortletLog myLogRef = getPortletLog();
Since logging operations are expensive, the PortletLog class
of the IBM Portlet API provides methods to determine if logging is
enabled
for a given level. The portlet should write to the log of a given
level only
if the log is tracking messages of that level. For example:
if( getPortletLog().isDebugEnabled() )
{
myLogRef.debug("Warning, Portlet Resources are low!");
}
Enabling logging for
portlets
Portlet
logging is enabled by setting the following trace strings in the log.properties file.
Standard portlets
javax.portlet.Portlet=all
Note: The Java Portlet
Specification
defines that log statements from the JSR portlets are also passed
on to the
ServletContext.log() method, which will additionally write them to System.out in
the default configuration.