1. 程式人生 > >生成系統操作日誌

生成系統操作日誌

系統操作日誌


系統操作日誌作用:主要是為了記錄登錄到系統中的人什麽時間對什麽模塊的某條數據進行了操作。方便追蹤操作責任。


本文講的是基於log4j日誌打印的,來生成系統操作日誌。其實就是每次執行一個操作的時候調用了一個公共方法,將“登錄人”、“操作時間”、“操作的模塊及方法”保存到了數據庫,用一張表來存儲起來。

實現:

每個control繼承BaseController.java

package com.kentra.controller.base;


import java.util.Date;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.ModelAndView;

import com.kentra.entity.Page;
import com.kentra.entity.system.Log;
import com.kentra.service.system.log.LogManager;
import com.kentra.service.system.log.impl.LogService;
import com.kentra.util.Const;
import com.kentra.util.Logger;
import com.kentra.util.PageData;
import com.kentra.util.PropertyUtil;
import com.kentra.util.UuidUtil;

/**
 * @author KENTRASOFT
 * 修改時間:2015、12、11
 */
public class BaseController {
	
	protected Logger logger = Logger.getLogger(this.getClass());
	private static final long serialVersionUID = 6357869213649815390L;
	private static Log log=null;
	private static LogService logService = null;
	
	/** new PageData對象
	 * @return
	 */
	public PageData getPageData(){
		return new PageData(this.getRequest());
	}
	
	/**得到ModelAndView
	 * @return
	 */
	public ModelAndView getModelAndView(){
		return new ModelAndView().addObject("systemName", PropertyUtil.readValue(Const.sysName));
	}
	
	/**得到request對象
	 * @return
	 */
	public HttpServletRequest getRequest() {
		HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
		return request;
	}

	/**得到32位的uuid
	 * @return
	 */
	public String get32UUID(){
		return UuidUtil.get32UUID();
	}
	
	/**得到分頁列表的信息
	 * @return
	 */
	public Page getPage(){
		return new Page();
	}
	
	public void logBefore(Logger logger, String busId,String addUser,String remark) throws Exception{
		if(logService==null)logService = (LogService)Const.webAppContext.getBean("logService");
		log = log == null ? new Log() : log;
		log.setId(UuidUtil.get32UUID());
		log.setBusId(busId);
		log.setAddUser(addUser);
		log.setAddTime(new Date());
		log.setRemark(remark);
		logService.save(log);
		
	}	
}

②每個方法中調用logBefore方法。

	/**保存
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/save")
	@ResponseBody
	public ResultUtil save(Supervision supervision,String fileGrids) throws Exception{
		String busId = this.get32UUID();
		if(!Jurisdiction.buttonJurisdiction(this.getPageData().getString("key"))){return null;} //校驗權限
		supervision.setId(busId);
		supervision.setCreatTime(DateUtil.getTime());
		supervisionService.save(supervision);
		logger.info("-----------日誌打印------------");
		logBefore(logger, busId, Jurisdiction.getUsername(), "督辦單-新增");
		return ResultUtil.success("添加成功!", "supervision", "", "closeCurrent");	
	}

這樣就生成了操作日誌。


本文出自 “JianBo” 博客,請務必保留此出處http://jianboli.blog.51cto.com/12075002/1960229

生成系統操作日誌