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


 

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