<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    張昊

    J-Hi(http://www.j-hi.net)

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      45 Posts :: 1 Stories :: 110 Comments :: 0 Trackbacks

    系統(tǒng)日志就是記錄管理員或用戶對系統(tǒng)的歷史操作信息,比如管理員添加或者修改、刪除一個角色,這些操作都可以記錄到系統(tǒng)日志表中,管理員可以通過“系統(tǒng)管理系統(tǒng)日志”菜單查詢詳細(xì)的日志信息。

    系統(tǒng)日志的配置大致包括兩個方面:系統(tǒng)日志緩存配置和系統(tǒng)日志類型配置,此兩項配置信息在WEB-INF/config/appContext.xml

    ²        系統(tǒng)日志緩存配置:

    系統(tǒng)產(chǎn)生的日志默認(rèn)不是立即存入數(shù)據(jù)庫的,而是存入日志緩存中,緩存中的日志信息達(dá)到設(shè)定的緩存策略時,系統(tǒng)將緩存中的日志信息存入數(shù)據(jù)庫,緩存策略配置目前支持按照緩存大小、時間、日志條數(shù)設(shè)置

    appContext.xml文件中找到如下配置

    <bean id="cacheProcessor" class="org.hi.base.sysapp.interceptor.LogSizeCacheProcessor">

               <property name="size" value="10"/>

    </bean>

    此處是按照緩存大小設(shè)置的緩存策略,此處的緩存大小設(shè)置的值為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>

    -->

    此處兩項配置也是緩存策略的設(shè)置,第一項配置是按照時間設(shè)置緩存策略,此處的時間值為1分鐘,第二項配置是按照日志條數(shù)設(shè)置緩存策略,此處的日志條數(shù)值為10

    注意:以上三項配置只能保留一項,也就是說當(dāng)系統(tǒng)運(yùn)行時只能選擇一種日志緩存策略

    ²        系統(tǒng)日志類型配置:

    系統(tǒng)日志類型根據(jù)操作的不同大概分為四種:添加和更新操作、刪除操作、查詢操作、其他操作,此四種類型分別對應(yīng)于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"/>

    系統(tǒng)運(yùn)行時,管理員可以根據(jù)關(guān)注的日志類型選擇其中的一項或者多項,選擇好后將其配置到以下代碼處:

    <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>

    管理員可以將關(guān)注的日志類型添加到<property name="analysisors">下的<list>標(biāo)簽下,上面的代碼配置了三項日志類型,即添加和更新操作、刪除操作、其他操作產(chǎn)生的日志將會被記錄到數(shù)據(jù)庫,不建議將查詢操作日志類型添加進(jìn)去,因為查詢操作將會產(chǎn)生大量日志,不便于管理員找到自己關(guān)注的日志內(nèi)容,另外也會在較短時間內(nèi)占用大量的數(shù)據(jù)庫空間。

    設(shè)計分析:通過上面的配置文件可以看出,系統(tǒng)日志的設(shè)計思想通過Spring的方法攔截器(methodLogInterceptor),該攔截器又分大的三個部分,保存處理器(saveProcessor);緩存處理器(cacheProcessor);日志分析器(analysisors)。保存處理器,的工作是將日志保存到指定的持久化介質(zhì)中例如數(shù)據(jù)庫表或是XML等,目前平臺缺省提供的是保存到數(shù)據(jù)庫表中,當(dāng)然您也可以通過實現(xiàn)接口的方式自由控制日志保存的位置;緩存處理器,日志不是每生產(chǎn)一條就做一次保存的,而是通過緩存批量將日志信息保存起來,緩存處理器就是來完成日志的緩存功能,目前平臺提供3種緩存機(jī)制;日志分析器,因為數(shù)據(jù)的增刪查改等操作的描述信息各不相同,所以日志分析器的作用是分析日志數(shù)據(jù)的描述格式以方面管理員閱讀日志。對于日志的處理流程來看,當(dāng)調(diào)用某個業(yè)務(wù)層方法時日志的方法攔截器就是攔截住該方法,首先通過方法的類型調(diào)用相應(yīng)日志分析器分析出日志描述信息與格式,然后將日志放到緩存中,緩存處理器會根據(jù)相應(yīng)的觸發(fā)條件,如果滿足條件就調(diào)用保存處理器將日志信息批量保存起來。




                                               注:該文檔由J-Hi愛好者"刀刀"提供,他的QQ號為150380807,歡迎大家與他在技術(shù)上多多交流

    posted on 2011-03-30 20:51 張昊 閱讀(1875) 評論(2)  編輯  收藏

    Feedback

    # re: J-Hi對系統(tǒng)日志的設(shè)計思想與設(shè)計原理 2011-04-11 10:41 darkbluefeeling
    攔截器做日志看起來很美,但實際使用中會遇到很多問題吧?

    我們以前拿spring的auto-proxy做過類似的,非常之難以控制,入侵性太大。我覺得再山寨一個springside的起步框架,不如做通用服務(wù)使用范圍更廣。

    比如日志:可以提供一個API,當(dāng)某個項目需要使用日志時,引入jar包,配置服務(wù),然后直接調(diào)用,不用管日志寫到了那兒。api將日志通過網(wǎng)絡(luò)寫到一個通用平臺系統(tǒng)中。如果需要查詢?nèi)罩?,則到一個這個平臺,統(tǒng)一查看和管理。以后,包括日志的自動歸檔,升級,日志統(tǒng)計與分析等等,都不需要每個項目配置一堆東西了。這種方式,不用提供基礎(chǔ)代碼讓項目改(如果項目多了就容易亂),而是直接讓他減少掉一個模塊。以后維護(hù),升級等等都更方便。

    比如這樣:http://www.guzzservices.com/category/developer-guide/

      回復(fù)  更多評論
      

    # re: J-Hi對系統(tǒng)日志的設(shè)計思想與設(shè)計原理 2011-04-11 12:32 張昊
    @darkbluefeeling
    我不知道您對J-Hi了解多少,不過有一點(diǎn)可以肯定,J-Hi不是springside,在整體設(shè)計上也沒有參考springside。  回復(fù)  更多評論
      


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲视频人成在线播放| 成人看的午夜免费毛片| 中文字幕亚洲一区| 麻豆69堂免费视频| 亚洲欧洲久久av| 中文字幕不卡免费高清视频| 国产成人免费片在线观看 | 亚洲图片校园春色| 亚洲精品视频免费看| 91亚洲国产成人久久精品| 亚洲一区二区三区免费观看| 亚洲成a人片在线观看播放| 91精品视频免费| 一本色道久久综合亚洲精品蜜桃冫| 最近免费中文字幕大全视频| 亚洲综合激情五月色一区| 国产免费观看网站| 精品一区二区三区高清免费观看 | 免费国产黄网站在线观看动图| 亚洲av无码成人精品区在线播放| 丁香六月婷婷精品免费观看| 国产成人99久久亚洲综合精品| 成全视频高清免费观看电视剧| 亚洲黄色中文字幕| 在线观看人成视频免费| 菠萝菠萝蜜在线免费视频| 中文亚洲AV片在线观看不卡| 99久久免费观看| 亚洲av永久中文无码精品综合| 亚洲成片观看四虎永久| 中文字幕免费观看视频| 亚洲人妖女同在线播放| 日韩一级免费视频| 最近免费字幕中文大全| 亚洲国产区男人本色在线观看| 免费一级毛片不卡在线播放| 久久免费观看国产99精品| 亚洲精品无码专区| 亚洲VA成无码人在线观看天堂| 国产成在线观看免费视频| 成人免费网站久久久|