代码只是当时写的一个简单测试例子,可以进行优化,将各个acton及对应的方法及操作等都可以进行配 置,如配置到一个xml文件当中,以后系统中新增加了action去修改xml文件就可以了。这样就不用去写大量的if,也不用每次有新增action来 改日志管理系统的代码了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
@SuppressWarnings
(
"serial"
)
public
class
LogInterceptor
extends
AbstractInterceptor{
private
String logName;
private
String logContent;
protected
Logger log = Logger.getLogger(getClass());
public
void
init() {
}
@Override
public
String intercept(ActionInvocation ai)
throws
Exception {
Map session = ai.getInvocationContext().getSession();
Object action = ai.getAction();
String method = ai.getProxy().getMethod();
try
{
if
(StringUtils.isBlank(method)) method =
"method"
;
SysUser sysUser = (SysUser)session.get(Constants.SESSION_USER_KEY);
String userName =
""
;
if
(sysUser!=
null
) userName = sysUser.getUserName();
String currentTime = TimeHelper.getCurrentTime();
String logContentHead =
"用户"
+userName+currentTime;
ai.invoke();
//执行被拦截action
if
(action
instanceof
SysOrgAction) {
if
(method.equals(
"save"
)){
logName =
"保存部门"
;
logContent = logContentHead +
"保存部门:"
+ai.getStack().findValue(
"sysOrg.orgName"
);
log.info(logContent);
addSysLog(logName,logContent);
}
if
(method.equals(
"delete"
)){
logName =
"删除部门"
;
logContent = logContentHead +
"删除"
+((String[])(ai.getStack().findValue(
"flag_id"
))).length+
"条部门信息"
;
log.info(logContent);
addSysLog(logName,logContent);
}
}
if
(action
instanceof
SysOrgForAdmAction) {
if
(method.equals(
"save"
)){
logName =
"保存单位"
;
logContent = logContentHead +
"保存单位:"
+ai.getStack().findValue(
"sysOrg.orgName"
);
log.info(logContent);
addSysLog(logName,logContent);
}
if
(method.equals(
"delete"
)){
logName =
"删除单位"
;
logContent = logContentHead +
"删除1条单位信息"
;
log.info(logContent);
addSysLog(logName,logContent);
}
}
if
(action
instanceof
SysUserAction || action
instanceof
SysUserForAdmAction) {
if
(method.equals(
"save"
)){
logName =
"保存用户"
;
logContent = logContentHead +
"保存用户:"
+ai.getStack().findValue(
"sysUser.userName"
);
log.info(logContent);
addSysLog(logName,logContent);
}
if
(method.equals(
"delete"
)){
logName =
"删除用户"
;
logContent = logContentHead +
"删除"
+((String[])(ai.getStack().findValue(
"flag_id"
))).length+
"条用户信息"
;
log.info(logContent);
addSysLog(logName,logContent);
}
}
}
catch
(Exception e){
e.printStackTrace();
}
return
Action.SUCCESS;
}
/**
* 插入系统日志
* @param logName
* @param logContent
*/
private
void
addSysLog(String logName,String logContent){
HttpServletRequest request = ServletActionContext.getRequest();
SysLogService sysLogService = (SysLogService)ApplicationContextFactory.getApplicationContext().getBean(
"sysLogService"
);
SysLog sysLog =
new
SysLog();
sysLog.setLogName(logName);
sysLog.setLogContent(logContent);
sysLog.setLogType(Constants.LOG_TYPE_SYS);
sysLog.setLogTime(TimeHelper.getCurrentTime());
sysLog.setLogIp(request.getRemoteAddr());
sysLog.setLogKey(logName);
sysLogService.saveLog(sysLog);
}
}
|