Resin中對日誌輸出的配置

Resin中對日誌的設置主要有如下參數:log、logger、access-log、stdout-log和stderr-log。前兩個放在<resin>標籤,也就是主標籤下面,其中log主要用於配置JDK logging API,logger用於指定需要log的包及level,跟log4j中的用法相似,只不過resin中level有個特殊的選項就是off,用於關閉日誌輸出;而後面三個*-log放在<host>或<host-default>下面,access用於HTTP輸出,stdout用於標準輸出(System.out),stderr用於錯誤輸出(System.err,對應log4j中的log.error)。

三個*-log中間的屬性是相同的,所以我們集中來說明一下:

path: 用於設定日誌文件的路徑,非常有意思的是它支持所謂的El Variables and Functions,也就是resin中的變量,比如${host.name}就是虛擬站點的id名稱,所以如果將它放在<host-default>下面的話,將path設置爲 logs/${host.name}/access.log的話可以將不同站點的日誌存放在不同的目錄下面。 archive-format: 這個參數可以設置日誌歸檔的格式,如設置爲access-%Y%m%d.log可以在歸檔的時候自動按日期進行歸檔命名。另外還有一個特性需要說明的是,resin竟然支持自動壓縮log文件,而且設置的方法非常簡單,只要後綴名是gz就可以了,如access-%Y%m%d.log.gz,這樣歸檔的時候會自動壓縮,而且支持windows和linux系統。 format: 用於設置每條日誌輸出的格式,這個非常簡單,而且通常使用系統內置的格式就可以了。 rollover-size: 用來設置歸檔日誌文件的最小尺寸,單位可以設置成kb、mb等等,默認爲1mb。 rollover-period: 用來設置歸檔日誌文件的週期,單位可以是1D(一天)、1W(一週)、1M(一個月)等。

最後給出一個範例供大家參考:

  1. <!--
  2.    - Resin 3.1 configuration file.
  3.   -->
  4. <resin xmlns="http://caucho.com/ns/resin"
  5.        xmlns:resin="http://caucho.com/ns/resin/core">
  6.   <!--
  7.      - Logging configuration for the JDK logging API.
  8.     -->
  9.   <log name="" level="off" path="stdout:"
  10.        timestamp="[%H:%M:%S.%s] {%{thread}} "/>
  11.  
  12.   <!--
  13.      - 'info' for production
  14.      - 'fine' or 'finer' for development and troubleshooting
  15.     -->
  16.   <logger name="com.caucho" level="info"/>
  17.  
  18.   <logger name="com.caucho.java" level="config"/>
  19.   <logger name="com.caucho.loader" level="config"/>
  20.  
  21.     <host-default>
  22.       <!--
  23.          - With another web server, like Apache, this can be commented out
  24.          - because the web server will log this information.
  25.         -->
  26.       <access-log path="logs/${host.name}/access.log" 
  27.             archive-format="access-%Y%m%d.log.gz"
  28.             format='%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"'
  29.             rollover-size="10mb"
  30.             rollover-period="1D"/>
  31.       <!--
  32.          - stdout log and stderr log
  33.         -->
  34.       <stdout-log path="logs/${host.name}/stdout.log" 
  35.             archive-format="stdout-%Y%m%d.log.gz"
  36.             timestamp="[%Y.%m.%d %H:%M:%S.%s]" 
  37.             rollover-size="10mb"
  38.             rollover-period="1D"/>
  39.       <stderr-log path="logs/${host.name}/stderr.log" 
  40.             archive-format="stderr-%Y%m%d.log.gz"
  41.             timestamp="[%Y.%m.%d %H:%M:%S.%s]" 
  42.             rollover-size="10mb"
  43.             rollover-period="1D"/>
  44.     </host-default>
  45. </resin>

最後還有一個事情需要說明一下,如果在windows系統下將resin註冊成服務程序之後就會在log目錄下產生jvm-defautl.log文件,而且這個文件會一直累加,所以會變的文件非常大而影響resin的性能。原來在Apache和Resin產生大容量日誌的解決辦法這篇文件中提到的使用httpd -jvm-log NUL的方法在3.1中無法使用,而且查找了大量的文檔也沒有找到合適的方法,後來索性將log目錄中的寫入權限去掉了,重啓resin也沒有任何影響,算是解決了這個問題。

參考資料:

http://caucho.com/resin-3.1/doc/config-log.xtp

http://caucho.com/resin-3.1/doc/el-var.xtp#host

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章