spring + log4j 配置说明

来源:互联网 发布:服务器的80端口是什么 编辑:程序博客网 时间:2024/06/14 20:51

下面使用的log4j 使用maven导入

<dependency>    <groupId>apache-log4j</groupId>    <artifactId>log4j</artifactId>    <version>1.2.8</version></dependency>   

一. log4j 配置文件的加载

1. log4j 默认加载类路径下的log4j.properties文件,如果自定义了其他 名称的properties文件的时候,就需要手动加载。

(1).加载xml文件: DOMConfigurator.configure(“C:/properties/log4jConfig.xml”)

(2). 加载properties文件:PropertyConfigurator.configure(“C:/properties/log4jConfig.xml”)

2. 在web中加载log4j配置文件(web.xml)

<!--设置配置文件的路径/WEB-INF/classes/log4jconfig.xml--><context-param>          <param-name>log4jConfigLocation</param-name>          <param-value>/WEB-INF/classes/log4jconfig.xml</param-value>     </context-param> <listener>      <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class></listener>

二. log4j 的配置文件(log4jconfig.xml)

    <?xml version="1.0" encoding="UTF-8"?>        <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">    <!--该配置 参数 详解 见这三篇博客         1. http://www.cnblogs.com/v-weiwang/p/4814050.html           2. http://blog.csdn.net/javaloveiphone/article/details/7994313          3. http://blog.csdn.net/u012540337/article/details/17682625    -->    <!-- 输出到控制台  -->    <appender name="CONSOLE-APPENDER" class="org.apache.log4j.ConsoleAppender">        <param name="encoding" value="UTF-8" />        <param name="target" value="System.out"/>        <layout class="org.apache.log4j.PatternLayout">            <param name="ConversionPattern" value="[%-5p] %d [日志内容:%m]%n" />        </layout>        <!-- 使用过滤器设置记录日志的范围 -->        <!-- filter过滤器设置输出的级别:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF -->        <filter class="org.apache.log4j.varia.LevelRangeFilter">            <param name="LevelMax" value="off" />            <param name="LevelMin" value="all" />            <param name="AcceptOnMatch" value="true"/> <!-- 详解见http://bbs.csdn.net/topics/350195913  -->        </filter>    </appender>    <!-- debug  该日志主要记录程序中出现的调试异常 -->    <appender name="DEBUG-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">        <param name="File" value="${user.home}/logs/debug/debug.out" /> <!-- 日志输出路径 -->        <param name="Append" value="true" /> <!-- 默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。 -->        <param name="encoding" value="GBK" />        <param name="DatePattern" value="'.'yyyy-MM-dd'.out'" />        <!-- 设置每天生产一个日志文件 当然也可以指定按月、周、天、时和分。即对应的格式如下:         (1)'.'yyyy-MM'.suffix': 每月               (2)'.'yyyy-ww'.suffix': 每周         (3)'.'yyyy-MM-dd'.suffix': 每天        (4)'.'yyyy-MM-dd-a'.suffix': 每天两次         (5)'.'yyyy-MM-dd-HH'.suffix': 每小时        (6)’.'yyyy-MM-dd-HH-mm'.suffix':每分钟 -->        <layout class="org.apache.log4j.PatternLayout">            <param name="ConversionPattern" value="[%-5p] %d 耗时:%r [日志内容:%l%n%m]%n" />        </layout>        <!-- 使用过滤器设置记录日志的范围 -->        <filter class="org.apache.log4j.varia.LevelRangeFilter">            <param name="LevelMax" value="debug" />            <param name="LevelMin" value="debug" />        </filter>    </appender>    <!-- error  该日志主要记录程序中出现的异常错误 -->    <appender name="ERROR-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">        <param name="File" value="${user.home}/logs/error/error.out" /> <!-- 日志输出路径 -->        <param name="Append" value="true" /> <!-- 默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。 -->        <param name="encoding" value="GBK" />        <param name="DatePattern" value="'.'yyyy-MM-dd'.out'" /> <!-- 每天生产文件的格式是:error.out.2015-05-11.out -->        <param name="threshold" value="error"/> <!-- 设置日志类型 -->        <layout class="org.apache.log4j.PatternLayout">            <param name="ConversionPattern" value="[%-5p] %d 耗时:%r [日志内容:%l%n%m]%n" />        </layout>        <!-- 使用过滤器设置记录日志的范围 -->        <!--<filter class="org.apache.log4j.varia.LevelRangeFilter">                <param name="LevelMax" value="error" />                <param name="LevelMin" value="error" />            </filter>        -->    </appender>    <!-- 指定项目中xx包下面的日志的输出源(appender) -->    <!--将logger中的 additivity 属性配置为 false,则这个logger不会将日志流反馈到root中(前提是产生的日 志级别必    须大于level(下面是error级别)设置的级别)。可以达到以logger中配置的appender方式来输出日志而其他地方输出的目-->    <logger name="com.xxx.xxx.aop" additivity="false">         <level value="error"></level>        <appender-ref ref="ERROR-APPENDER"/>    </logger>       <!-- root -->    <root>        <level value="info"></level> <设置为infosystem.out.println()信息才能输出出来>        <appender-ref ref="CONSOLE-APPENDER"/>    </root></log4j:configuration>

三. 使用spring aop做日志的统一管理。

@Aspect@Componentpublic class ControllerExceptionAspect {    static Logger logger = Logger.getLogger(ControllerExceptionAspect.class);    /**     * 使用aop处理异常     * @param joinPoint     * @return     */    @Around("bean(xxx) || bean(xxx) ||   bean(xxx)")    public Object process(ProceedingJoinPoint joinPoint){        try {            Object val = joinPoint.proceed();            return val;        } catch (Throwable e) {            logger.error(e.getMessage(), e);            if(e instanceof com.xxx.xxx.xxx.ServiceException){ //业务异常(提示信息)返回到页面中                return new JsonResult(e.getMessage());            }else{                return null;            }           }    }}
0 0