web.xml
 
   <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/log4j.xml</param-value>
    </context-param>
 
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>
log4j.xml
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d %-5p %c{1}:%L %m %n" />
<!--
ConversionPattern format specification
%d      inserts the date; you can specify the format (%d{yyyy-MM-dd HH:mm:ss,SSS})
%-5p    inserts the priority log level, 5 characters, left justified
%c{1}   inserts the name of the class
%L      inserts the line number
%m      inserts the user message
%n      inserts the separator (for example, a new line)
-->
            <param name="MaxFileSize" value="512KB" />
            <param name="MaxBackupIndex" value="10" />
        </layout>
    </appender>
 
    <appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
        <param name="Threshold" value="INFO" />
        <param name="File" value="${webapp.root}/WEB-INF/logs/helloworld.log"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d %-5p %c{1}:%L %m %n" />
        </layout>
    </appender>
 
 
    <logger name="org.springframework">
        <level value="error"/>
    </logger>
 
    <logger name="org.hibernate">
        <level value="error"/>
    </logger>
 
 
    <logger name= "net.pack">
        <level value="debug"/>
    </logger>
 
 
    <root>
        <priority value="info"></priority>
        <appender-ref ref="stdout"/>
        <appender-ref ref="fileAppender"/>
    </root>
</log4j:configuration>
 
public class TestController {
 
    private static final Logger logger = Logger.getLogger(TestController.class);
 
     public ModelAndView addTest(@ModelAttribute("test") Test test, BindingResult result) {
        logger.debug("test logging --debug");
     }
 
}