这几天老大让整了一个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了!
试试吧!