在定义的action中勾选了启用日志,那么在操作这个action时,平台就会向日志表SA_Log中插入一条操作记录
如果在记录操作日志的时候需要自己向SA_Log的扩展字段或者自己的表中插入数据,可以用拦截器实现
拦截器可以在/BIZ/system/config/interceptor.config.m中定义,推荐用扩展空间修改这个文件
需要注意的是自己加的拦截器定义信息要放到平台默认的logAfter这个下面,便于在自己的拦截器中获取平台默认生成的日志记录的信息
具体参考如下:
1.interceptor.config.m中配置拦截器
<item name="selfLog" value="/demo/misc/logic/code,LogAction,after" />
name可以自己取
value属性值,第一个逗号前面的是自己定义的拦截器的java所在的模块路径
第二个逗号前面的是定义的拦截器的java的类,(需要注意的是如果是在src下定义的那么要在java类前面添加包名,如com.justep.system.interceptor.LogAfter,其中com.justep.system.interceptor包名,LogAfter是类名)
最后的after或者是before是指在action执行前或者执行后执行这个逻辑
2.java中的定义
import com.justep.model.Action; import com.justep.system.action.Interceptor; import com.justep.system.context.ActionContext; import com.justep.system.context.ContextHelper; import com.justep.system.data.KSQL; import com.justep.util.Utils; public class LogAction implements Interceptor { public void execute() { // 获取当作之前的action ActionContext context = ContextHelper.getActionContext(); Action action = context.getAction(); // 判断action是否有启用日志的标识 if (action.isLogEnabled()) { // 获取平台的默认生成的日志记录的id String id = (String) context.get(LogBefore.ACTION_LOG_SID); if (Utils.isNotEmptyString(id)) { // 通过平台的日志id修改这条记录中扩展自己的值,如果是自己的表,可以写自己对应的insert语句等 String sql = "update SA_Log log set log.sESField01 = '自己的日志数据' where log='" + id + "'"; KSQL.executeUpdate(sql, null, "/system/data", null); } } } }
评一波