Spring+Log4J.xml在web中的使用方法

来源:互联网 发布:什么是网络综艺节目 编辑:程序博客网 时间:2024/06/06 07:20

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 配置

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. 代码测试

@Componentpublic 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;@Componentpublic 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----");    }}
原创粉丝点击