springMvc配置log4j

1 添加maven依赖

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.5</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.5</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.16</version>
    <scope>runtime</scope>
</dependency>	

2 配置log4j.xml(也可以使用properties方式)

Log4j中有三个主要组成部分:
loggers: 负责捕获记录信息。
appenders : 负责发布日志信息,以不同的首选目的地。(可以使控制台或者文件)
layouts: 负责格式化不同风格的日志信息。
 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>

    <!-- 可以配置多个appender来对应不同的输出,如文件输出,控制台输出等 -->  
    <!-- 不同的输出类型对应着不同的calss,如控制台输出class对应着 org.apache.log4j.ConsoleAppender,文件输出可以使用class
      	org.apache.log4j.RollingFileAppender -->  
	
	<!--配置appender为文件-->
    <appender name="rollingFile" class="org.apache.log4j.RollingFileAppender">
        <param name="file" value="$${webapp.root}/logs/test.log"/>
        <param name="append" value="true" />
        <param name="maxFileSize" value="512MB"/>
        <param name="maxBackupIndex" value="2"/>
        <layout class="org.apache.log4j.EnhancedPatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p](%-35c{1.}:%-3L) %m%n" />
        </layout>
    </appender>
	
    <!--配置appender为控制台-->
    <appender name="console" class="org.apache.log4j.ConsoleAppender">  <!-- name给logger或者root调用 -->
    <layout class="org.apache.log4j.EnhancedPatternLayout">
    <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p](%-35c{1.}:%-3L) %m%n" />
    </layout>
	      <!--filter过滤器设置输出的级别:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF
          所有下面输出的是debug到warn,不会有fatal
      -->  
        <filter class="org.apache.log4j.varia.LevelRangeFilter">  
            <param name="levelMin" value="info" />  
            <param name="levelMax" value="warn" />  
            <param name="AcceptOnMatch" value="true" /> 
        </filter>  
    </appender>


    <!--配置包的日志级别,additivity为是否继承root的日志级别-->
	<!--level 配置日志的级别,value="INFO",debug级别的日志不会打印-->
    <logger name="com.controller" additivity="false">
        <level value="INFO"/>
        <!--<appender-ref ref="console"/>-->
        <appender-ref ref="rollingFile"/>
    </logger>


	<!-- Root Logger -->  
    <!-- 所有logger的父类,记录所有的日志。 -->
    <root>
        <level value="INFO"/>
        <!--<appender-ref ref="console" />-->
        <appender-ref ref="rollingFile"/>
    </root>
</log4j:configuration>

 

 


3 配置web.xml
在web.xml中添加以下配置

 

 

 

 

 

<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:log4j.xml</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

 

4 测试
写一个controller类来进行测试下

 

 

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class LogController {
    private static Logger logger = LoggerFactory.getLogger(LogController.class);

    @RequestMapping("/log")
    @ResponseBody
    public String log(){
        logger.info("info");
        logger.debug("debug");
        logger.warn("warn");
		logger.error("error")
        return "log";
    }
}

启动tomcat,打开http://localhost:8080/log

控制台输出

2018-03-22 10:55:27 [INFO ](c.l.c.LogController                :16 ) info
2018-03-22 10:55:27 [WARN ](c.l.c.LogController              :18 ) warn


如果想输出error日志,可以更改log4j.xml中的filter配置,
        <filter class="org.apache.log4j.varia.LevelRangeFilter">  
            <param name="levelMin" value="info" />  
            <param name="levelMax" value="error" />  
            <param name="AcceptOnMatch" value="true" /> 
        </filter>  
也可以不配置filter。

若更改
    <logger name="com.controller" additivity="false">
        <level value="INFO"/>
        <!--<appender-ref ref="console"/>-->
        <appender-ref ref="rollingFile"/>
    </logger>
中的level value="debug",则debug级别的日志可以打印


控制台输出
2018-03-22 10:55:27 [INFO ](c.l.c.LogController                :16 ) info
2018-03-22 10:55:27 [INFO ](c.l.c.LogController                :17 ) debug
2018-03-22 10:55:27 [WARN ](c.l.c.LogController              :18 ) warn
2018-03-22 10:55:27 [INFO ](c.l.c.LogController                :19 ) error


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章