1.通過Maven導入Jar包依賴
- Spring依賴的包:spring-core,spring-beans, spring-context, spring-web
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.2.3.RELEASE</version>
</dependency>
- Log4J依賴包:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2. web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>Archetype Created Web Application</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:config/spring/core/appcontext-*.xml</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<!-- 注意與上方spring配置文件差異,此處classpath後不可帶* -->
<param-value>classpath:log/log4j.xml</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<!-- 配置log4j.xml監聽器-->
<!--需要配置在 ContextLoaderListener之前-->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
3. Log4J.xml 配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
<log4j:configuration>
<!-- 日誌輸出到控制檯-->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<!-- 日誌輸出格式 -->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss SSS}][%c]-[%m]%n" />
</layout>
<!--過濾器設置輸出的級別-->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<!-- 設置日誌輸出的最小級別 -->
<param name="levelMin" value="INFO" />
<!-- 設置日誌輸出的最大級別 -->
<param name="levelMax" value="ERROR" />
</filter>
</appender>
<!--日誌輸出到文件,且每天一個文件-->
<appender name="rootAppender" class="org.apache.log4j.DailyRollingFileAppender">
<!-- 文件位置 -->
<param name="File" value="/data/applogs/own/root.log" />
<!-- 是否在原有日誌的基礎添加新日誌-->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%p][%d{HH:mm:ss SSS}][%c]-[%m]%n" />
</layout>
</appender>
<!-- 根logger的設置-->
<root>
<priority value ="debug"/>
<appender-ref ref="console"/>
<appender-ref ref="rootAppender"/>
</root>
</log4j:configuration>
4. 代碼測試
@Component
public class LogTest {
Logger logger = Logger.getLogger(LogTest.class);
@PostConstruct
public void test(){
logger.info("----Log.Info----");
logger.info("----Log.Info----");
logger.info("----Log.Info----");
}
}
5. 結果展示:
控制檯輸出:
文件輸出
6. Spring + Log4j + Slf4j
Slf4j爲所有日誌組件提供統一的門面,在使用時,如果需要換日誌組件(如從logback換成log4j),只需要替換相應的jar即可, 理論上是不需要修改代碼。
此處以Log4j + Slf4j 爲例:
需要jar包:
<!--引入spring依賴jar-->
<!--slf4j的依賴包-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.9</version>
</dependency>
<!--連接slf4j與log4j-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.9</version>
</dependency>
<!--log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
測試代碼
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class LogTest {
// 通過slf4j提供的工廠方法,構建logger
private static final Logger logger = LoggerFactory.getLogger(LogTest.class);
@PostConstruct
public void test(){
logger.info("----Log.Info----");
logger.info("----Log.Info----");
logger.info("----Log.Info----");
}
}