Java Struts – Logging with Log4j Example

Download Log4j: http://logging.apache.org/log4j/index.html

Log4j Appender:
Create a Log4j properties file (log4j.properties) and define the appender details (where to log and log file details). And put the log4j.properties into your project classpath.

log4j.properties

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\loging.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

# Root logger option
log4j.rootLogger=error, file, stdout

Struts Action Class:

//...
public class UserAction extends Action{

  private static final Logger logger = Logger.getLogger(UserAction.class);

  public ActionForward execute(ActionMapping mapping,ActionForm form,
	HttpServletRequest request,HttpServletResponse response)
  throws Exception {

	if(logger.isDebugEnabled()){
		logger.debug("Starting started");
	}
	//...

Struts Custom Exception Handler:

//...
public class MyCustomExceptionHandler extends ExceptionHandler{

  private static final Logger logger =
                       Logger.getLogger(MyCustomExceptionHandler.class);

  @Override
  public ActionForward execute(Exception ex, ExceptionConfig ae,
	ActionMapping mapping, ActionForm formInstance,
	HttpServletRequest request, HttpServletResponse response)
	throws ServletException {

	//log the error message
	logger.error(ex);

	return super.execute(ex, ae, mapping, formInstance, request, response);
  }

}

Log4j Output File Sample- c:\\logging.log

12:45:52,210 ERROR MyCustomExceptionHandler:25 - java.io.IOException
12:48:27,672 ERROR MyCustomExceptionHandler:25 - ExceptionConfig[type=
java.io.IOException,handler=
com.javac.common.exception.MyCustomExceptionHandler,
key=error.global.mesage,path=/pages/error.jsp,scope=request]
12:48:54,102  INFO PropertyMessageResources:209 - Operating in Default mode [null]
12:48:54,134 DEBUG sax:1410 - startElement(,web-app,web-app)
12:48:54,134 DEBUG Digester:1417 -   Pushing body text ''
12:48:54,134 DEBUG Digester:1436 -   New match='web-app'
12:48:54,134 DEBUG Digester:1464 -   No rules found matching 'web-app'.

Java Servlet – Logging with Log4j Example

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.PrintWriter;
import java.io.IOException;
import org.apache.log4j.*;

public class LoggingServlet extends HttpServlet {

    private static Logger logger = Logger.getLogger(LoggingServlet.class);

    public void doPost(HttpServletRequest req, HttpServletResponse res)
            throws IOException, ServletException {
        logger.info("invoked the LoggingServlet...");
        PrintWriter writer = res.getWriter();
        writer.println("Check your web server console...");
        writer.flush();
        writer.close();
    }

}