1. 程式人生 > >Resin中對日誌輸出的配置

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. <resinxmlns="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. <logname=""level="off"path="stdout:"
  10. timestamp="[%H:%M:%S.%s] {%{thread}} "/>
  11. <!--
  12.      - 'info' for production
  13.      - 'fine' or 'finer' for development and troubleshooting
  14.     -->
  15. <loggername="com.caucho"level="info"/>
  16. <loggername="com.caucho.java"level="config"/>
  17. <loggername="com.caucho.loader"level="config"/>
  18. <host-default>
  19. <!--
  20.          - With another web server, like Apache, this can be commented out
  21.          - because the web server will log this information.
  22.         -->
  23. <access-logpath="logs/${host.name}/access.log"
  24. archive-format="access-%Y%m%d.log.gz"
  25. format='%h %l %u %t"%r" %s %b"%{Referer}i""%{User-Agent}i"'
  26. rollover-size="10mb"
  27. rollover-period="1D"/>
  28. <!--
  29.          - stdout log and stderr log
  30.         -->
  31. <stdout-logpath="logs/${host.name}/stdout.log"
  32. archive-format="stdout-%Y%m%d.log.gz"
  33. timestamp="[%Y.%m.%d %H:%M:%S.%s]"
  34. rollover-size="10mb"
  35. rollover-period="1D"/>
  36. <stderr-logpath="logs/${host.name}/stderr.log"
  37. archive-format="stderr-%Y%m%d.log.gz"
  38. timestamp="[%Y.%m.%d %H:%M:%S.%s]"
  39. rollover-size="10mb"
  40. rollover-period="1D"/>
  41. </host-default>
  42. </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