close

  一段時間沒記Blog了,顯示筆者狀態由【研發】轉為【專案】。研發時用Survey最新技術看是否有助提升開發品質,專案時則需選擇最穩定技術,取得進度與風險之間的最佳平衡。三年前接手他人銀行專案前,我為該專案研發最適用的Framework,即使專案成員在程式能力不強,依然需當作客戶看待。之後我接手成為該專案Leader,卻屢屢與其中一位成員衝突,該成員說詞是為何以前可以現在不行,而我回答就是因為可以,前Leader才會被換掉。最後身為Leader,我把他換下來了。角色的轉換,不單關注焦點思維不同,連決策及身負的責任也殊異。

  以上與本主題無關,目前要著手的專案,對Log有個By Size與By Time的需求。目前最新的Log4J核心Jar並無此功能,週邊我倒是找到兩個,一個是今年5/18釋出的TimeAndSizeRollingAppender,自http://simonsiteblog.blogspot.com/取得,並無Maven Repository。所以得比照Oracle的JDBC Jar方式放置到Local Repository。以下是用log4j.xml配置:

<appender name="DateAndSize" class="org.apache.log4j.appender.TimeAndSizeRollingAppender">
    <param name="DatePattern" value="'.'yyyy-MM-dd'.log'"/> <!--By Date設定 -->
    <param name="File" value="C:/logs/sample.log" />
    <param name="Threshold" value="DEBUG"/>
    <param name="MaxFileSize" value="20KB"/>
    <param name="MaxRollFileCount" value="10"/>
    <param name="ScavengeInterval" value="30000"/>  <!--間隔30秒輪詢,超出MaxFileSize就壓縮 -->
    <param name="BufferedIO" value="false"/>
    <param name="CompressionAlgorithm" value="GZ"/>
    <layout class="org.apache.log4j.PatternLayout">
           <param name="ConversionPattern" value="%d{yyyy/MM/dd HH:mm:ss} %-5p [%F:%L] : %m%n" />
    </layout>
</appender>

  得到Log檔清單如右:sample.log、sample.log.2010-05-27.log.1.gz、sample.log.2010-05-27.log.2.gz、sample.log.2010-05-27.log.3.gz…。

  另一個就不好用,叫CompositeRollingAppender,會產出sample.log、sample.log.1、sample.log.2…,但換到第二天時,只有sample.log會變成sample.log.2010-05-26.log,而有Index的log並不會跟著變更檔名,還會被今天的Log蓋過去。

arrow
arrow
    全站熱搜

    Jemmy 發表在 痞客邦 留言(0) 人氣()