log4j跟踪日志问题

来源:互联网 发布:手机打印软件 编辑:程序博客网 时间:2024/06/06 14:56

这几天老大让整了一个log4j日志;要求每天把日志打印到一个文件.


整完了,但是又让改,


怎么改呢?


登录用户操作了什么,在哪个类里执行了哪个方法,都要记录在日志中 ; 


行了,不多说了,我把代码贴出来吧


<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">  
<log4j:configuration>  
    <appender name="console" class="org.apache.log4j.ConsoleAppender">  
        <param name="target" value="System.out" />  
        <layout class="org.apache.log4j.PatternLayout">  
            <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss.SSS} %-6p%c:%L %x - %m%n" />  
        </layout>  
    </appender>  
  
    <appender name="error" class="org.apache.log4j.DailyRollingFileAppender">  
    <!-- D盘 -->
        <param name="File" value="D://logs//error.log" />
<!-- <param name="File" value="${root}/WEB-INF/log/%yyyy/%mm/%dd/trace.log" /> -->
        <param name="DatePattern" value="'.'yyyy-MM-dd" />  
        <param name="threshold" value="error"/>  
        <param name="append" value="true"/>  
        <layout class="org.apache.log4j.PatternLayout">  
            <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] %-6p%c:%L - %m%n" />  
        </layout>  
    </appender>  
  
    <appender name="logic" class="org.apache.log4j.DailyRollingFileAppender">  
        <param name="File" value="D://logs//logic.log" />  
<!-- <param name="File" value="${root}/WEB-INF/log/%yyyy/%mm/%dd/trace.log" /> -->
        <param name="DatePattern" value="'.'yyyy-MM-dd" />  
        <param name="threshold" value="info"/>  
        <param name="append" value="true"/>  
        <layout class="org.apache.log4j.PatternLayout">  
            <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] %-6p%c:%L - %m%n" />  
        </layout>  
    </appender>  
  
    <appender name="trace" class="org.apache.log4j.DailyRollingFileAppender">  
        <!-- D盘 -->
        <param name="File" value="D://logs//trace.log" />  
<!-- <param name="File" value="${root}/WEB-INF/log/%yyyy/%mm/%dd/trace.log" /> -->
        <param name="DatePattern" value="'.'yyyy-MM-dd" />  
        <param name="threshold" value="info"/>  
        <param name="append" value="true"/>  
        <layout class="org.apache.log4j.PatternLayout">  
               <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] - %X{mchId} - %X{mchName} - %X{siteName} - %X{sessionId} - %X{cityId} - %X{userName} - %X{mobile} - %m%n" />  
         </layout>  
    </appender>  
  
    <logger name="traceLog" additivity="false">  
        <level value="info" />  
        <appender-ref ref="trace" />  
    </logger>  
  
    <root>  
        <level value="info" />  
        <appender-ref ref="console"/>  
        <appender-ref ref="logic" />  
        <appender-ref ref="error" />  
    </root>  
</log4j:configuration>  


对了,我们的代码中有工具类,获取拦截用户的工具类,我就把用户的操作放到了这个工具类中


public class FxsInfoLog {


//获取到分销商编号
// public String fxsno = AuthUtil.getUserId();

private  String fxsno = "fxs01" ;

//获取到经销商编号
// public String jxsno = AuthUtil.getAuthJid();


private String jxsno = "jxsno" ;


//此处的"tranceLog"为log4j中定义的对应的 logger的name  
    private static final Logger TRACE_LOGGER = LoggerFactory.getLogger("traceLog");  
  
    public void info(){  
        TRACE_LOGGER.info("fxs编号为:"+getFxsno());  
        TRACE_LOGGER.info(getFxsno()+"操作了"+new Exception().getStackTrace()[1].getClassName());  
        TRACE_LOGGER.info(getFxsno()+"操作了"+new Exception().getStackTrace()[1].getMethodName());  
    }  
  


public String getFxsno() {
return fxsno;
}


public void setFxsno(String fxsno) {
this.fxsno = fxsno;
}


public String getJxsno() {
return jxsno;
}


public void setJxsno(String jxsno) {
this.jxsno = jxsno;
}

}


如果我一个类A中想要使用日志跟踪,那么

FxsInfoLog log = new FxsInfoLog();

log.info();

一切就ok了!


试试吧!


0 0