系统的使用过程中,经常需要去查看一些历史操作的记录,用于排错、追责、统计分析或一些其他的需求使用,所以定义一个易用的统一日志打印框架非常必要,此实例使用spring aop完成,可作参考。
首先,声明一个作为切点的注解RecordLog,注解带一个LogDict类型的参数,主要用于定义该接口的基本信息,比如:接口编号、接口功能、异常日志级别等。
package com.alien.constant.annotations;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import com.alien.constant.enums.LogDict;
/**
* @Description: 日志注解,请在需要打印日志的方法上加入该注解
* @author alien
* @date 2016年10月24日 下午3:22:10
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RecordLog {
LogDict log() default LogDict.Un_Know;
}
LogDict是一个枚举类型,用于定义记录日志时关心的自定义字段,以下是几条示例:
Un_Know(Dict.Error_Level_Warn, 000000, "未知操作"),
QUERY_USER_LIST(Dict.Error_Level_Warn, 100004, "查询用户列表"),
ADD_USER(Dict.Error_Level_Error, 100006, "新增用户"),
UPDATE_USER(Dict.Error_Level_Error, 100008, "修改用户"),
以及Dict类对日志级别的定义,作为参考:
Error_Level_Info (1, "一般", "操作日志记录,功能运行正常!"),
Error_Level_Debug (2, "警告", "测试功能出错,对业务无影响,需要修复!"),
Error_Level_Warn (3, "紧急", "显示功能出错,对业务无影响,需及时修复!"),
Error_Level_Error (4, "严重", "修改功能出错,对业务有影响,短时间内可能不会引起业务问题,需尽快解决!"),
Error_Level_Accident(5, "事故", "业务功能出错ÿ