The following example shows how to integrate LOG4J using the Spring Web MVC Framework. To start with, let us have a working Eclipse IDE in place and stick to the following steps to develop a Dynamic Form based Web Application using the Spring Web Framework.
Step | Description |
---|---|
1 | Create a project with the name TestWeb under a package com.howcodex as explained in the Spring MVC - Hello World chapter. |
2 | Create a Java class HelloController under the com.howcodexpackage. |
3 | Download the log4j library LOG4J from the maven repository page. Put it in your CLASSPATH. |
4 | Create a log4j.properties under the SRC folder. |
5 | The final step is to create the content of the source and configuration files and export the application as explained below. |
package com.howcodex; import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.ui.ModelMap; @Controller @RequestMapping("/hello") public class HelloController{ private static final Logger LOGGER = Logger.getLogger(HelloController.class); @RequestMapping(method = RequestMethod.GET) public String printHello(ModelMap model) { LOGGER.info("printHello started."); //logs debug message if(LOGGER.isDebugEnabled()){ LOGGER.debug("Inside: printHello"); } //logs exception LOGGER.error("Logging a sample exception", new Exception("Testing")); model.addAttribute("message", "Hello Spring MVC Framework!"); LOGGER.info("printHello ended."); return "hello"; } }
# Root logger option log4j.rootLogger = DEBUG, stdout, file # Redirect log messages to console 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{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n # Redirect log messages to a log file log4j.appender.file = org.apache.log4j.RollingFileAppender #outputs to Tomcat home log4j.appender.file.File = ${catalina.home}/logs/myapp.log log4j.appender.file.MaxFileSize = 5MB log4j.appender.file.MaxBackupIndex = 10 log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
<beans xmlns = "http://www.springframework.org/schema/beans" xmlns:context = "http://www.springframework.org/schema/context" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc = "http://www.springframework.org/schema/mvc" xsi:schemaLocation = " http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <context:component-scan base-package = "com.howcodex" /> <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name = "prefix" value = "/WEB-INF/jsp/" /> <property name = "suffix" value = ".jsp" /> </bean> </beans>
<%@ page contentType = "text/html; charset = UTF-8" %> <html> <head> <title>Hello World</title> </head> <body> <h2>${message}</h2> </body> </html>
Here, we have configured the LOG4J to log details on the Tomcat console and in the file present in &t; tomcat home → logs as myapp.log.
Once you are done with creating source and configuration files, export your application. Right click on your application, use Export → WAR File option and save your TestWeb.war file in Tomcat's webapps folder.
Now, start the Tomcat server and make sure you are able to access other webpages from the webapps folder using a standard browser. Try a URL −http://localhost:8080/TestWeb/hello and we will see the following screen on Tomcat's log.