This example shows how to configure logging in Struts framework or struts2 application using Log4j.
Below Java code uses Logger instance for debug from apache log4j library configured using properties file.
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//... 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
//... 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
1 2 3 4 5 6 7 8 9 10 |
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'. |