cas 的审记日志用到了Inspektr。Inspektr是什么呢?带着这个问题,查找了它的官网https://code.google.com/p/inspektr/
现在源代码移到了https://github.com/dima767/inspektr,代码结构并且进行了重构。
简而言之Inspektr就是一个很小的无侵入的审计日志jar包。它对于spring所托管的bean可以从如何几个方面去捕获记录系统运行时的信息:
The WHO: who performed an action being audited. 用户名字 The WHAT: what system resource being targeted by this audited action 被审记动作所涉及到的系统资源 The ACTION: what audited action is being performed 被执行的动作名字 The APPLICATION_CODE: an arbitrary string token identifying application running an audited action 服务器所运行的应用名字 The WHEN: a timestamp of an audited action 被审记动作发生的时间点 The CLIENT_IP: an IP address of the client invoking an audited action 客户端的ip The SERVER_IP: an IP address of the server running an audited action 服务器的ip
这个不是很好理解, 但是对于cas在后台我们能看到如下的日志信息:
2014-07-06 13:50:49,892 INFO [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - Audit trail record BEGIN ============================================================= WHO: [username: test] WHAT: TGT-188644-45bCO36lTf0pMGywb0sk4zOglGascrPZhsuHF5cGbRLPsuWRTN-localhost ACTION: TICKET_GRANTING_TICKET_CREATED APPLICATION: CAS WHEN: Sun Jul 06 13:50:49 CST 2014 CLIENT IP ADDRESS: 192.168.0.110 SERVER IP ADDRESS: 192.168.0.110 =============================================================
Inspektr的框架很简单,它涉到了3个主要的类:
AuditActionContext:审计信息的聚集地,即所有审记的信息,都在这个类中; AuditTrailManager: 审计数据中心接口; AuditTrailManagementAspect: 审计点的配置
另外对于主要的组件类,Inspektr定义了如下插件式的策略接口来解决WHO, WHAT, ACTION, CLIENT_IP 及 SERVER_IP 审记数据:
PrincipalResolver: WHO解析器,即解析出WHO AuditResourceResolver: WHAT解析器,即解析出WHAT AuditActionResolver: ACTION解析器 ClientInfoResolver: CLIENT_IP 与 SERVER_IP解析器 Audit , Audits: 方法注解,用于标识审计点. 在默认情况部下,Inspektr提供了如下的实现类: ConsoleAuditTrailManager:将审计信息输出到控制台; Slf4jLoggingAuditTrailManager:将审计信息输出到系统所用的日志框架中; JdbcAuditTrailManager:将审计信息输出到数据库。
Inspektr的配置步骤很简单:
1.通过spring的aop自动代理或者aspectj的织入功能自动载入AuditTrailManagementAspect 2.要web.xml中配置com.github.inspektr.common.web.ClientInfoThreadLocalFilter 3.配置 AuditTrailManagers,所有的解析器都包装在AuditTrailManagementAspect中; 4.定义审计点.
发表评论(对文章涉及的知识点还有疑问,可以在这里留言,老高看到后会及时回复的。)