系统操作日志的实现原理

定义操作日志实体

public class SystemOperationLog extends BaseEntity {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 8596392701331679567L;

	/**
	 * 操作人
	 */
	private String operator;
	
	/**
	 * 日志类型
	 */
	private String logType;
	
	/**
	 * 创建时间
	 */
	private Date createTime;
	
	/**
	 * 日志详情
	 */
	private String logDetail;

	public String getOperator() {
		return operator;
	}

	public void setOperator(String operator) {
		this.operator = operator;
	}
	public String getLogType() {
		return logType;
	}
	public void setLogType(String logType) {
		this.logType = logType;
	}
	public Date getCreateTime() {
		if(createTime!=null){
			return (Date)createTime.clone();
		}
		return null;
	}
	public void setCreateTime(Date createTime) {
		if(createTime!=null){
			this.createTime = (Date)createTime.clone();
		}else{
			this.createTime = null;
		}
	}
	public String getLogDetail() {
		return logDetail;
	}
	public void setLogDetail(String logDetail) {
		this.logDetail = logDetail;
	}	
}

定义日志格式和类别的常量类

public interface LogMessageConstant {
	
	
	//******************begin****操作日志对应类型*******************************
	/**
	 * 客户开通
	 */
	public static final String LogType_customer_open = "0";
	/**
	 * 服务开通
	 */
	public static final String LogType_service_open = "1";
	/**
	 * 订购关系变更
	 */
	public static final String LogType_subscriber_order_change = "2";
	
	/**
	 * 账户充值
	 */
	public static final String LogType_account_recharge = "3";
	
	/**
	 * 产品订购
	 */
	public static final String LogType_order_product = "4";
	
	/**
	 * 用户注销
	 */
	public static final String LogType_user_termination = "5";
	
	
	//**************************操作日志详情信息***************************
	/**
	 * 服务开通详细信息
	 */
	public static final String MSG_Service_open = "操作员 {0} 客户 {1} 开通服务";
	/**
	 * 客户开通详情
	 */
	public  static final String MSG_Customer_open= "操作员 {0} 为客户 {1} 开户";
	/**
	 * 账户充值
	 */
	public static final String  MSG_Account_recharge="操作员 {0} 为客户 {1} 充值 {2} 元";
	
	/**
	 * 用户订购套餐
	 */
	public static final String  MSG_order_main="操作员 {0} 为客户 {1} 订购 {2} 产品";
	
	/**
	 * 用户修改订购套餐
	 */
	public static final String  MSG_order_update="操作员 {0} 为客户 {1} 修改订购 {2} 产品";
	
	/**
	 * 用户
	 */
	public static final String  MSG_order_cancel="操作员 {0} 为客户 {1} 取消产品 {2} 订购";
	
	/**
	 * 用户注销
	 */
	public static final String  MSG_user_termination="操作员 {0} 为客户 {1} 注销 {2} 用户";	
}

业务接口方法

/**
	* @Title: listOperLog 
	* @Description: 根据条件获取操作日志 分页记录信息
	* @param @param pageParam
	* @param @param params
	* @param @return
	* @return PageBean<SystemOperationLog>
	 */
	public PageBean<SystemOperationLog> listOperLog(PageParam pageParam,Map<String,Object> params);
	/**
	* @Title: saveLog 
	* @Description: 保存系统操作日志
	* @param @param log
	* @param @param params
	* @param @return
	* @return boolean
	 */
	public boolean saveOperationLog(SystemOperationLog log, Map<Integer,String> params);

业务接口实现

public boolean saveOperationLog(SystemOperationLog log, Map<Integer,String> params) {
		String logDetail = log.getLogDetail();
		
		if(StringUtil.isNotNull(logDetail)){
			for(int i=0;i<params.size();i++){
				String value = params.get(Integer.valueOf(i));
				logDetail = logDetail.replace("{"+i+"}", value);
			}
			log.setLogDetail(logDetail);
			insert(log);
			return true;
		}
		return false;
	}

使用方式

Map<Integer,String> pm = new HashMap<>();
pm.put(0,customerInfo.getCreateOperator());
pm.put(1,customerInfo.getCustomerName());
SystemOperationLog log = new SystemOperationLog();
log.setLogType(LogMessageConstant.LogType_customer_open);
		log.setCreateTime(UTCTimeUtil.getLocalTimeFromUTC(sdf.format(customerInfo.getCreateTime())));
log.setOperator(customerInfo.getCreateOperator());
log.setLogDetail(LogMessageConstant.MSG_Customer_open);

systemOperationLogService.saveOperationLog(log, pm);

使用总结

对于操作日志这种数据,可以保存在mysql,也可以保存在mongodb数据库中,鉴于此种业务只需要做保存和查询功能,所以一般都存储在mongodb数据库中。只要操作日志的存储过程开发完毕,当有新的类型操作日志时,只需要增加对应的日志类型和详情信息的格式定义即可。例如:操作员 {0} 为客户 {1} 注销 {2} 用户

学习Java的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:543120397 我们一起学Java!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曾卫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值