在定义的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);

			}
		}
	}
}

执行结果如下:
log