系統日志就是記錄管理員或用戶對系統的歷史操作信息,比如管理員添加或者修改、刪除一個角色,這些操作都可以記錄到系統日志表中,管理員可以通過“系統管理—系統日志”菜單查詢詳細的日志信息。
系統日志的配置大致包括兩個方面:系統日志緩存配置和系統日志類型配置,此兩項配置信息在WEB-INF/config/appContext.xml中
²
系統日志緩存配置:
系統產生的日志默認不是立即存入數據庫的,而是存入日志緩存中,緩存中的日志信息達到設定的緩存策略時,系統將緩存中的日志信息存入數據庫,緩存策略配置目前支持按照緩存大小、時間、日志條數設置
在appContext.xml文件中找到如下配置
<bean id="cacheProcessor" class="org.hi.base.sysapp.interceptor.LogSizeCacheProcessor">
<property name="size" value="10"/>
</bean>
此處是按照緩存大小設置的緩存策略,此處的緩存大小設置的值為10M
此行代碼下方有兩個類似的被注釋的配置如下:
<!--
<bean id="cacheProcessor" class="org.hi.base.sysapp.interceptor.LogTimerCacheProcessor">
<property
name="period" value="1"/>
</bean>
<bean id="cacheProcessor" class="org.hi.base.sysapp.interceptor.LogLengthCacheProcessor">
<property
name="length" value="10"/>
</bean>
-->
此處兩項配置也是緩存策略的設置,第一項配置是按照時間設置緩存策略,此處的時間值為1分鐘,第二項配置是按照日志條數設置緩存策略,此處的日志條數值為10條
注意:以上三項配置只能保留一項,也就是說當系統運行時只能選擇一種日志緩存策略
²
系統日志類型配置:
系統日志類型根據操作的不同大概分為四種:添加和更新操作、刪除操作、查詢操作、其他操作,此四種類型分別對應于WEB-INF/config/appContext.xml配置文件中的四項配置
添加和更新操作
<bean id="saveLogAnalysisor" class="org.hi.base.sysapp.interceptor.LogSaveAnalysisor"/>
刪除操作
<bean id="removeLogAnalysisor" class="org.hi.base.sysapp.interceptor.LogRemoveAnalysisor"/>
查詢操作
<bean id="searchLogAnalysisor" class="org.hi.base.sysapp.interceptor.LogSearchAnalysisor"/>
其他操作
<bean id="noknowLogAnalysisor" class="org.hi.base.sysapp.interceptor.LogNoknowAnalysisor"/>
系統運行時,管理員可以根據關注的日志類型選擇其中的一項或者多項,選擇好后將其配置到以下代碼處:
<bean id="methodLogInterceptor" class="org.hi.base.sysapp.interceptor.MethodLogInterceptor">
<property name="saveProcessor" ref="saveProcessor"/>
<property name="cacheProcessor" ref="cacheProcessor"/>
<property name="unincludeMethodNames">
<value>getEnumerations</value>
</property>
<property name="analysisors">
<list><!—- 此處配置日志類型 -->
<ref bean="saveLogAnalysisor"/>
<ref bean="removeLogAnalysisor"/>
<ref bean="noknowLogAnalysisor"/>
</list>
</property>
</bean>
管理員可以將關注的日志類型添加到<property name="analysisors">下的<list>標簽下,上面的代碼配置了三項日志類型,即添加和更新操作、刪除操作、其他操作產生的日志將會被記錄到數據庫,不建議將查詢操作日志類型添加進去,因為查詢操作將會產生大量日志,不便于管理員找到自己關注的日志內容,另外也會在較短時間內占用大量的數據庫空間。
設計分析:通過上面的配置文件可以看出,系統日志的設計思想通過Spring的方法攔截器(methodLogInterceptor),該攔截器又分大的三個部分,保存處理器(saveProcessor);緩存處理器(cacheProcessor);日志分析器(analysisors)。保存處理器,的工作是將日志保存到指定的持久化介質中例如數據庫表或是XML等,目前平臺缺省提供的是保存到數據庫表中,當然您也可以通過實現接口的方式自由控制日志保存的位置;緩存處理器,日志不是每生產一條就做一次保存的,而是通過緩存批量將日志信息保存起來,緩存處理器就是來完成日志的緩存功能,目前平臺提供3種緩存機制;日志分析器,因為數據的增刪查改等操作的描述信息各不相同,所以日志分析器的作用是分析日志數據的描述格式以方面管理員閱讀日志。對于日志的處理流程來看,當調用某個業務層方法時日志的方法攔截器就是攔截住該方法,首先通過方法的類型調用相應日志分析器分析出日志描述信息與格式,然后將日志放到緩存中,緩存處理器會根據相應的觸發條件,如果滿足條件就調用保存處理器將日志信息批量保存起來。
注:該文檔由J-Hi愛好者"刀刀"提供,他的QQ號為150380807,歡迎大家與他在技術上多多交流