CAS Audit日志数据库持久化配置
CAS的Audit日志默认是使用slf4j记录到cas_audit.log
的。这里记录一下配置到mysql数据库保存。4.1以前需要自己配置数据库连接池,4.1+自带c3p0。我使用的是CAS 4.1.6,替换了默认的c3p0连接池。
1. 配置cas.properties
,加入数据源
cas.audit.database.dialect=MySQLInnoDBDialect
cas.audit.database.batchSize=30
cas.audit.database.ddl.auto=update
cas.audit.database.gen.ddl=update
cas.audit.database.show.sql=true
#以下部分可以和jdbc认证数据源共享
cas.audit.database.driverClass=com.mysql.jdbc.Driver
cas.audit.database.url=jdbc:mysql://127.0.0.1:3306/cas?useUnicode=true&characterEncoding=UTF-8
cas.audit.database.user=xxxxx
cas.audit.database.password=xxxxx
cas.audit.database.pool.minSize=2
cas.audit.database.pool.maxSize=15
cas.audit.database.pool.maxIdleTime=180
cas.audit.database.pool.maxWait=300000
applicationContext.xml
中加入
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="${cas.audit.database.driverClass}"/>
<property name="url" value="${cas.audit.database.url}"/>
<property name="username" value="${cas.audit.database.user}"/>
<property name="password" value="${cas.audit.database.password}"/>
<property name="minIdle" value="${cas.audit.database.pool.minSize}"/>
<property name="maxActive" value="${cas.audit.database.pool.maxSize}"/>
<property name="validationQuery" value="${cas.audit.database.pool.connectionHealthQuery}"/>
<property name="testWhileIdle" value="true"/>
<property name="timeBetweenEvictionRunsMillis" value="1800"/>
<property name="filters" value="stat, wall"/>
<property name="testOnBorrow" value="false"/>
<property name="testOnReturn" value="false"/>
<!-- poolPreparedStatements 只支持oracle和mysql 5.5+ -->
<property name="poolPreparedStatements" value="true"/>
<property name="maxOpenPreparedStatements" value="150"/>
</bean>
2. deployerConfigContext.xml
中查询auditTrailManager
bean,修改为:
注意:
4.0 com.github.inspektr.audit.support.JdbcAuditTrailManager
4.1+ org.jasig.inspektr.audit.support.JdbcAuditTrailManager
<bean id="auditTrailManager" class="org.jasig.inspektr.audit.support.JdbcAuditTrailManager"
c:transactionTemplate-ref="transactionTemplate"
p:dataSource-ref="dataSource"/>
<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate"
c:transactionManager-ref="transactionManger"
p:isolationLevelName="ISOLATION_READ_COMMITTED"
p:propagationBehaviorName="PROPAGATION_REQUIRED"/>
<bean id="transactionManger" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource"/>
3. 数据库建一个审计日志表:
CREATE TABLE `COM_AUDIT_TRAIL` (
`AUD_USER` varchar(100) NOT NULL,
`AUD_CLIENT_IP` varchar(15) NOT NULL,
`AUD_SERVER_IP` varchar(15) NOT NULL,
`AUD_RESOURCE` varchar(100) NOT NULL,
`AUD_ACTION` varchar(100) NOT NULL,
`APPLIC_CD` varchar(5) NOT NULL,
`AUD_DATE` datetime NOT NULL,
KEY `COM_AUDIT_TRAIL_DATE_I` (`AUD_DATE`) USING BTREE,
KEY `COM_AUDIT_TRAIL_CLIENT_DATE_I` (`AUD_CLIENT_IP`,`AUD_DATE`) USING BTREE,
KEY `COM_AUDIT_TRAIL_USER_DATE_I` (`AUD_USER`,`AUD_DATE`) USING BTREE,
KEY `COM_AUDIT_TRAIL_ACTION_DATE_I` (`AUD_ACTION`,`AUD_DATE`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
配置完成,上线后,登录就可以在数据库中看到审计日志了。
下一次会记录cas 的负载均衡。