liwevire
liwevire

Reputation: 903

How to set log4j log level in spring MVC web project

Please find below for the log4j.xml and controller class. I have added lines in log4j.xml to change the log level from error to debug. But there is no effect seen after adding these lines.

I need this setup to debug "HTTP 400: The request sent by the client was syntactically incorrect." Could anyone help me on this? Thanks.

log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="Appender1" class="org.apache.log4j.ConsoleAppender">
       <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern" value="%-7p %d [%t] %c %x - %m%n"/>
       </layout>
    </appender>

    <appender name="Appender2" class="org.apache.log4j.FileAppender">
       <param name="File" value="./Logs/SpringMVC2.log" />
       <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern" value="%-7p %d [%t] %c %x - %m%n"/>
       </layout>
    </appender>

<!--    no effect of these lines -->
<!--    <logger name="org.springframework.web" additivity="false"> -->
    <logger name="org.springframework" additivity="false">
        <priority value ="DEBUG" />
        <level value="DEBUG"/>
        <appender-ref ref="CONSOLE"/>
    </logger>  
    <root>
        <priority value ="DEBUG" />
        <level value="DEBUG"/>
        <appender-ref ref="CONSOLE"/>
    </root>
<!--     /no effect of these lines -->
</log4j:configuration>

Controller class

@EnableWebMvc
@Controller
@RequestMapping(value="/home")
public class HomeController {
    private Logger logger= Logger.getLogger(HomeController.class);
    @RequestMapping(method=RequestMethod.GET)
    public String home() {
        logger.info("sample info log");
        logger.debug("sample debug log");
        logger.trace("sample trace log");
        logger.error("sample error log");
        return "home";
    }
}

Upvotes: 1

Views: 1540

Answers (1)

Dams
Dams

Reputation: 997

You define appender with name <appender name="Appender1" class="org.apache.log4j.ConsoleAppender"> but you don't use it.

Instead of use <appender-ref ref="CONSOLE"/> use the one you define :

<logger name="org.springframework" additivity="false">
    <priority value ="DEBUG" />
    <level value="DEBUG"/>
    <appender-ref ref="Appender1"/>
</logger>  

Upvotes: 1

Related Questions