Resin中對日誌輸出的配置
阿新 • • 發佈:2019-02-07
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(一個月)等。
最後給出一個範例供大家參考:
- <!--
- - Resin 3.1 configuration file.
- -->
- <resinxmlns="http://caucho.com/ns/resin"
- xmlns:resin="http://caucho.com/ns/resin/core
- <!--
- - Logging configuration for the JDK logging API.
- -->
- <logname=""level="off"path="stdout:"
- timestamp="[%H:%M:%S.%s] {%{thread}} "/>
- <!--
- - 'info' for production
- - 'fine' or 'finer' for development and troubleshooting
- -->
- <loggername="com.caucho"level="info"/>
- <loggername="com.caucho.java"level="config"/>
- <loggername="com.caucho.loader"level="config"/>
- <host-default>
- <!--
- - With another web server, like Apache, this can be commented out
- - because the web server will log this information.
- -->
- <access-logpath="logs/${host.name}/access.log"
- archive-format="access-%Y%m%d.log.gz"
- format='%h %l %u %t"%r" %s %b"%{Referer}i""%{User-Agent}i"'
- rollover-size="10mb"
- rollover-period="1D"/>
- <!--
- - stdout log and stderr log
- -->
- <stdout-logpath="logs/${host.name}/stdout.log"
- archive-format="stdout-%Y%m%d.log.gz"
- timestamp="[%Y.%m.%d %H:%M:%S.%s]"
- rollover-size="10mb"
- rollover-period="1D"/>
- <stderr-logpath="logs/${host.name}/stderr.log"
- archive-format="stderr-%Y%m%d.log.gz"
- timestamp="[%Y.%m.%d %H:%M:%S.%s]"
- rollover-size="10mb"
- rollover-period="1D"/>
- </host-default>
- </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