Sun ONE logo      上一個      目錄      索引      下一個     

Sun ONE Application Server 7 管理員指南

第 5 章
使用記錄功能

本章描述 Sun ONE Application Server 的記錄功能。另外,還論述可能使用記錄功能的元件。

本章包含以下主題:


關於記錄

在應用程式中使用時,記錄是很有用的除錯和診斷工具。它也會提高開發人員的生產率。應用程式伺服器專用的日誌輸出可以幫助識別和診斷伺服器配置與部署問題。

Sun ONE Application Server 內的記錄使用的是 Java 記錄 API。Sun ONE Application Server 將記錄資訊收集和儲存在兩個日誌檔中,即 logs 目錄下的 access.logserver.log。您也可將日誌導入自己的日誌檔中。

記錄的訊息所提供的資訊比僅訊息本身提供的資訊要多。提供的附加資訊包括︰

根據用於記錄的平台以及為該平台啟用的記錄服務之不同,附加訊息資訊的類型和次序也不同。若要啟用虛擬伺服器 ID 以取得記錄的訊息,請參閱配置日誌服務


在 UNIX 和 Windows 平台上記錄

本章節論述日誌檔的建立方法。另外,本章節還包括下列主題︰

server.log 內的預設記錄

在 UNIX 與 Windows 兩個平台上,於 log 子目錄下的 server.log 內建立日誌檔。在該單一檔案內,收集來自實例之所有伺服器元件和虛擬伺服器的日誌。

可以設定整個伺服器的預設日誌層級。不過,您也可在子系統層級上置換特定子系統的預設日誌層級。您也可將 stdoutstderr 重新導向至伺服器的事件日誌,並將日誌輸出導向至作業系統的系統日誌。此外,您也可將 stdoutstderr 內容導向至伺服器事件日誌。依預設,日誌訊息除發送至指定的伺服器日誌檔以外,也發送至 stderr

另一個可用功能是以日誌訊息記錄虛擬伺服器 ID。使用多重虛擬伺服器將訊息記錄至同一個日誌檔時,此功能非常有用。您可以選擇將日誌訊息寫入至系統日誌。若這樣做,在 server.log 檔案上將不執行記錄。相反,UNIX 上的 syslog 記錄服務或 Windows 平台上的系統記錄服務將用於產生和管理日誌。

您也可以使用 server.xml 屬性控制該檔案的內容。如需關於 server.xml 檔案的詳細資訊,請參閱「Sun ONE Application Server Administrator's Configuration File Reference」

server.log 的範例

以下是 server.log 的範例。

時間標記, 日誌層級, (PID vsid(選擇性的)):messageID:訊息

[01/Aug/2002:11:39:50] INFO ( 1224):CORE1116:Sun ONE Application Server 7.0

[01/Aug/2002:11:39:36] INFO (1224):CORE5076:Using [Java HotSpot™ Server VM, Version 1.4.0_02-20020712] from [Sun Microsystems Inc.]

[01/Aug/2002:11:39:50] INFO (1224):JMS5023:JMS service successfully started.Instance Name = domain1_server1, Home = [D:\install_7_29\imq\bin].

[01/Aug/2002:11:39:53] INFO (1224):CIS0056:Creating TCP ServerConnection at [EndPoint [IIOP_CLEAR_TEXT:192.18.145.66:3700:false]]

[01/Aug/2002:11:39:53] INFO (1224):CIS0057:Created TCP ServerConnection at [EndPoint [IIOP_CLEAR_TEXT:192.18.145.66:3700:false]]

[01/Aug/2002:11:39:54] INFO (1224):CIS0054:Creating TCP Connection from [-] to [EndPoint [IIOP_CLEAR_TEXT:192.18.145.66:3700:false]]


重新導向有關預先編譯 JSP 的日誌訊息︰

有關預先編譯 JSP 的日誌訊息依預設儲存在管理伺服器日誌檔中,該日誌檔位於 {domain_root}/{domain_name}/admin-server/logs/server.log 之下。

由於所有訊息都記錄至同一檔案,因而,使用預先編譯的 JSP 部署應用程式時,拋出的異常或錯誤在普通日誌檔訊息卷次中可能會遺失。在給定的領域下,將多重應用程式部署至多重實例時,需要仔細檢查管理伺服器中的日誌訊息,以確定與特定應用程式之 JSP 相關的任何異常。這會導致冗餘。

因此,最好在伺服器實例的 server.log 檔案中,而非管理伺服器的 server.log 檔案中,記錄有關使用預先編譯 JSP 所部署的應用程式之訊息。

若要將日誌訊息重新導向至您的 Sun ONE Application Server 實例 server.log 檔案,請在管理員介面中變更此日誌檔的路徑。請參閱配置日誌服務,以取得更多資訊。


使用 syslog 進行記錄

對於需要集中記錄的穩定作業環境而言,syslog 適用。對於經常需要日誌輸出以便診斷和除錯的環境而言,個別伺服器實例或虛擬伺服器日誌可能更容易管理。


  • 一個檔案中針對伺服器實例和管理伺服器的所有記錄資料,可能很難讀取和除錯。建議您僅對可順利執行的已部署應用程式使用 syslog 主日誌檔。
  • 記錄的訊息可與 Solaris 常駐應用程式的所有其他日誌混合。

使用 syslog 日誌檔,並結合 syslogd 以及系統日誌常駐程式,您可以將 syslog.conf 檔案配置為︰

配置 syslog

若要取得更高的管理性和可讀性,您可以配置 /etc 目錄下的 syslog.conf,將準備儲存的嚴重程度較低的訊息導入個別檔案中。

配置 syslog 的步驟︰

  1. 若要將準備儲存的嚴重性較低的訊息導入個別檔案中,請在 Solaris 的 syslog.conf 檔案中加入以下指令︰
  2. daemon.debug /var/adm/iasdebug


    日誌訊息導入至 Windows 事件日誌後,僅記錄層級為「資訊」「警告」「伺服器」「警示」「嚴重」的訊息。


  3. syslogd 發出掛斷訊號。可以使用以下指令完成此動作︰
  4. kill -HUP <PID syslogd>

  5. 移往管理介面中的管理伺服器,然後選取 [寫入系統日誌] 選項。儲存並套用變更。重新啟動管理伺服器,以使變更生效。
  6. 隨之出現配置的 Solaris syslog.conf 檔案範例︰

    #ident "@(#)syslog.conf 1.5 98/12/14  SMI"/* SunOS 5.0 */

    #

    # 版權所有 (c) 1991-1998 by Sun Microsystems, Inc.

    # 保留所有權利。

    #

    # syslog 配置檔案。

    #

    # 該檔案以 m4 處理,因此請小心引用 (`') 符合 m4

    # 保留字的名稱。同時,在 ifdef's 之內,必須引用

    # 包含逗號的引數。

    #

    *.err;kern.notice;auth.notice    /dev/sysmsg

    *.err;kern.debug;mail.crit /var/adm/messages

    daemon.info;daemon.err;daemon.debug;daemon.alert;daemon.crit;daemon.warning  /var/adm/iaslog

    daemon.debug /var/adm/iasdebug

    #daemon.notice;              /var/adm/iaslognotice

    #daemon.warning;              /var/adm/iaslogwarning

    #daemon.alert;              /var/adm/iaslogalert

    #daemon.err;              /var/adm/iaslogerr

    #*.alert;kern.err;daemon.err      operator

    #*.alert            root

    *.emerg            *

    # 如果非日誌主機選擇將認證訊息

    # 發送至日誌主機,un-comment 會出現在下列行上︰

    #auth.notice      ifdef(`LOGHOST', /var/log/authlog, @loghost)

    mail.debug      ifdef(`LOGHOST', /var/log/syslog, @loghost)

    #

    # 非日誌主機將使用下列行讓「使用者」

    # 日誌訊息在本機記錄。

    #

    ifdef(`LOGHOST', ,

    user.err          /dev/sysmsg

    user.err          /var/adm/messages

    user.alert          `root, operator'

    user.emerg          *

    )

    如需更多資訊,請參閱 syslog.conf 線上援助頁。

    syslog.conf 做出的任何變更,都需要重新啟動 Sun ONE Application Server 才能讓變更生效。

    由於記錄至 syslog 意味著所有 Sun ONE Application Server 的日誌以及其他常駐應用程式都收集在同一個檔案中,所以,藉由下列資訊增強記錄的訊息,以從特定伺服器或虛擬伺服器實例中識別 Sun ONE Application Server 特定訊息︰

  7. 唯一的訊息 ID
  8. 時間標記
  9. 實例名稱
  10. 程式名稱 (appservdappserv-wdog)
  11. 程序 ID (應用程式伺服器程序的 PID)
  12. 執行緒 ID (選擇性的)
  13. 伺服器 ID

server.xml 檔案中可以配置伺服器實例與虛擬伺服器實例的日誌服務。關於虛擬伺服器和記錄一節中描述虛擬伺服器實例的日誌服務配置。透過管理介面配置記錄一節中描述伺服器實例的日誌服務配置。

透過適當子系統和元件的管理介面可以配置日誌層級。

如需關於 UNIX 作業環境中使用的 syslog 記錄機制的更多資訊,請於終端提示處使用下列線上援助指令︰

man syslog

man syslogd

man syslog.conf

syslog 訊息範例

以下是 syslog 訊息的範例。

時間標記, 主機名稱 [instance_name], [子系統], [vsid], 訊息 ID, 日誌層級, 訊息資料

Jul 19 14:33:18 strange /usr/lib/nfs/lockd[164]:[ID 599441 daemon.info] Number of servers not specified.Using default of 20.

Jul 19 14:33:20 strange ntpdate[181]:[ID 558275 daemon.notice] adjust time server 192.18.56.149 offset 0.06702 6 sec

Jul 19 14:38:13 strange xntpd[248]:[ID 204180 daemon.info] synchronisation lost

Jul 19 14:38:47 strange server1 appservd[374]:[ID 702911 daemon.info] INFO ( 374):CORE1116:Sun ONE Application Server 7.0

Jul 19 14:38:48 strange server1 appservd[374]:[ID 702911 daemon.info] FINE ( 374):Collecting statistics for up to 1 processes with 128 threads, 200 listen sockets, and 1000 virtual servers

使用 Windows 事件日誌記錄

如需關於 Windows 作業環境使用的事件日誌機制的更多資訊,請參閱 Windows 輔助說明系統索引,查找關鍵字事件記錄


使用日誌層級

本章節論述日誌層級以及如何為每個 Sun ONE Application Server 子系統指定日誌層級,

描述下列主題︰

關於日誌層級

Sun ONE Application Server 為選擇性的資訊記錄使用標準的 JDK 1.4 日誌層級。除標準 JDK 日誌層級外,Sun ONE Application Server 還新增了一些日誌層級,用以更直觀地對映至 server.log,並更緊密地與 Solaris 整合。

當記錄的訊息路由至 server.log 時,它們也會依照對映至 server.log 的 Sun ONE Application Server 日誌層級中所定義的那樣,對映至日誌層級。


用於管理伺服器以及預設應用程式伺服器實例之 server.log 檔案 (或 syslog) 的預設日誌層級為「資訊」。該預設日誌層級用於應用程式伺服器實例時,將記錄錯誤訊息和資訊訊息。若要避免記錄此類訊息,請在 server.xml 檔案內或在管理伺服器與伺服器實例的管理介面中將日誌層級變更為「警告」或「伺服器」。

可於 log-service 元素中設定整個伺服器的預設日誌層級。這會影響將日誌層級設定為 "default" 的所有元素。


您可以為啟用記錄功能的每個 Sun ONE Application Server 子系統指定日誌層級。日誌層級對於合理化在執行期間記錄的訊息資訊數量很有用。可在預定子系統的 server.xml 檔案中指定層級。您可以藉由所選子系統的管理介面指定日誌層級,或者您可以直接編輯 server.xml 檔案,為選取的子系統設定需要的日誌層級。


小心

手動編輯 server.xml 檔案可能會產生語法錯誤,從而導致伺服器啟動失敗。「Sun ONE Application Server Administrator's Configuration File Reference」的「Manually Editing Configuration Files」一節論述手動編輯配置檔案的指導原則。


透過管理介面設定日誌層級的範例在圖用於 JMS 服務的日誌層級中展示。若要在 server.xml 檔案中直接設定每個子系統或元件的日誌層級,請參閱「Sun ONE Application Server Administrator's Configuration File Reference」

日誌層級中描述的日誌層級符合 JDK1.4 記錄 API 規格的需求。不過,日誌層級「警示」和「嚴重」僅特定用於 Sun ONE Application Server,不在 JDK1.4 記錄 API 中執行。

下表照嚴重性從低到高的次序,定義 Sun ONE Application Server 的日誌層級和訊息。左欄列示 Sun ONE Application Server 中指定的日誌層級,右欄提供每個日誌層級的簡要描述。

表格 5-1 日誌層級

日誌層級

描述

最精細
更精細
精細

這些訊息分別指示除錯訊息的冗長程度。「最精細」產生最大冗長度。

配置

訊息與各種靜態配置資訊有關,可協助對可能與特定配置關聯的問題進行除錯。

資訊

訊息實際上是有益的,通常與伺服器配置或伺服器狀況有關。這些訊息不指示需要立即採取動作的錯誤。

例如,可能記錄一條指示已收到配置變更通知的訊息;建立關於 MessageBroker 的新主題

警告

訊息表示一條警告。該訊息可能伴有異常。

伺服器

訊息指示發生相當重要的事件,可能會防止應用程式正常執行

警示*

訊息警示使用者採取特定動作。

嚴重*

訊息指示發生嚴重錯誤,發生錯誤後,建議不要執行伺服器。理論上來說,這將是伺服器當機前的最後訊息。

* 特定用於 Sun ONE Application Server 的日誌層級。


日誌層級低於「資訊」(最精細、更精細、精細及配置) 的所有訊息都會提供可幫助解決有關除錯問題的資訊,並且您必須依照技術支援人員的建議啟用它們。日誌層級低於「資訊」的訊息一般不用本土化。


用於 syslog 配置的日誌層級

下表包含當使用 syslog 時可在 Sun ONE Application Server 內配置的日誌層級之清單。左欄列示 Sun ONE Application Server 中指定的日誌層級,右欄提供 syslog 設備內相應的日誌層級。

表格 5-2 對映至 server.log 的 Sun ONE Application Server 日誌層級

Sun ONE Application Server

syslog 層級

最精細

LOG_DEBUG

更精細

LOG_DEBUG

精細

LOG_DEBUG

配置

LOG_INFO

資訊 (預設)

LOG_INFO

警告

LOG_WARNING

伺服器

LOG_ERR

警示

LOG_ALERT

嚴重

LOG_CRIT


關於虛擬伺服器和記錄

Sun ONE Application Server 可以有虛擬伺服器實例。Sun ONE Application Server 實例內的每個虛擬伺服器都有自己的識別身份,還可能有自己的日誌檔。使用每個虛擬伺服器的個別日誌檔,可以幫助追蹤針對特定作業事件和資源的伺服器活動。

若要藉由管理介面指定虛擬伺服器的日誌檔名稱,請自目錄樹移往 [HTTP 伺服器] 連結,然後開啟虛擬伺服器資料夾下的伺服器實例元素,以便在右框中顯示 [一般] 標籤。您可以在 [日誌檔] 欄位中輸入該虛擬伺服器的日誌檔路徑和名稱。圖「設定虛擬伺服器日誌檔名稱」顯示此設定的位置。


啟用記錄功能且當應用程式正在執行時,無需虛擬伺服器 ID 便可記錄已記錄的應用程式訊息。


圖 5-1 設定虛擬伺服器日誌檔名稱

圖顯示為虛擬伺服器設定日誌檔名稱的位置。

您也可以將記錄的訊息從多重虛擬伺服器導入到一個伺服器日誌檔中。若這樣做,您可能想在 server.xml 檔案的 log service 元素內啟用 log-virtual-server-id。這可幫助使用者識別來自不同虛擬伺服器的日誌訊息。

<log-service level="FINEST" log-stdout="false" log-stderr="false" echo-log-messages-to-stderr="false" create-console="false" log-virtual-server-id="true" use-system-logging="false">

</log-service>

  <http-listener>

    <virtual-server-class>

      <virtual-server id="server1" http-listeners="http-listener-1" hosts="strange" mime="mime1" state="on" accept-language="false"/>

      <virtual-server id="server2" hosts="strange" mime="mime1"/>

    </virtual-server-class>

  </http-listener>

在此範例中,<log-service log-virtual-server-id="true"> 用於在每條日誌訊息中納入 virtual_server_id。這可讓您鑑別來自不同虛擬伺服器的訊息。在 virtual-server 元素內缺失屬性 "log-file",會導致所有虛擬伺服器將訊息記錄至單一檔案。


關於記錄程式

在子系統層級,可以有選擇地啟用或停用記錄功能。針對每個子系統的記錄控制方式在 server.xml 檔案內指定,如「Sun ONE Application Server Configuration File Reference」中所述。依照 JDK1.4 記錄 API 的需求,每個子系統都有自己的記錄程式。

在下表中,左欄定義子系統,右欄展示每個子系統之 server.xml 檔案中的元素。

表格 5-3 Sun ONE Application Server 中的子系統與位置

子系統

元素

管理伺服器

<admin-service>

EJB 容器

<ejb-container>

Web 容器

<web-container>

MDB 容器

<mdb-container>

Sun ONE Message Queue (JMS 服務)

<jms-service>

安全性服務

<security-service>

Java Transaction Service (JTS)

<transaction-service>

物件請求仲裁介面 (ORB)

<iiop-service>

預設處理程式1

<log-service>

1預設處理程式指的是與所有 server.xml 項目 (不與特定子系統關聯,如公用程式類別) 相關聯的預設記錄程式。

圖 5-2 用於 JMS 服務的日誌層級

圖顯示為 JMS 服務設定日誌層級的位置。


在 Windows 平台上,如果您選擇將日誌發送至 Windows server.log,則僅會將層級為「資訊」「警告」「伺服器」「警示」「嚴重」的訊息記錄至 Windows 事件日誌。


表格日誌層級依嚴重性從低到高的次序,定義為 Sun ONE Application Server 訊息提供的日誌層級。這些日誌層級符合 JDK1.4 記錄 API 規格的需求。另外,日誌層級 ALERT 和 FATAL 僅特定用於 Sun ONE Application Server,在 JDK1.4 記錄 API 中不受支援。


關於用戶端記錄

應用程式用戶端容器 (ACC) 有自己的日誌服務,僅能記錄至本機檔案。

ACC 通常在應用程式伺服器以外的其他主機上以自己的程序執行。它本身有自己的記錄基礎架構以及自己的日誌檔。ACC 配置保留在檔案 sun-acc.xml 中。

用於 ACC 的用戶端子系統記錄元素是 log-service。下表列示元素與屬性,每個項目都指明了預設值和值範圍。

表格 5-4 ACC 記錄元素

元素

屬性

描述

log-service

file

若 ACC 日誌檔為空或遺漏,將記錄至 stdout

log-service

層級

ACC 日誌層級。

「Sun ONE Configuration File Reference」中提供 sun-acc.xml 檔案的範例。


重新導向應用程式與伺服器日誌輸出

對於開發人員而言,在應用程式元件與 J2EE 應用程式的單元測試期間,應用程式記錄和伺服器日誌必須隨時可用。在 Windows 平台上,開發人員更希望看到伺服器日誌訊息顯示在桌面上的指令視窗中。在 UNIX 平台上,許多開發人員樂意讓日誌訊息簡單地流向可啟動伺服器實例的終端機視窗中的 stderr,或者,使用指令尾 -f 查看日誌檔內寫入的日誌訊息。

server.xml 檔案包含可為 stdoutstderr 設定的屬性,以便將記錄的訊息導向至日誌檔或終端機視窗等等。請參閱「Sun ONE Application Server Configuration File Reference」,以取得關於使用 stdoutstderr 的更多資訊。

請參閱配置日誌服務以取得日誌服務資訊。


日誌檔管理

您可以設定您的存取和事件日誌 (server.log) 檔案,使其自動歸檔。有時,或者在指定的間隔時間後,您的日誌將旋轉。Sun ONE Application Server 會儲存舊日誌檔,並以含有儲存日期及時間的名稱標示已儲存的檔案。


雖然您可以建立多個虛擬伺服器並為每個虛擬伺服器關聯日誌檔,但無法支援個別虛擬伺服器的日誌旋轉設定。


例如,您可以設定您的存取日誌檔每小時旋轉一次,然後 Sun ONE Application Server 儲存並命名檔案 "access.199907152400",在該檔案中將日誌檔名稱、年、月、日,以及 24 小時時間一起連成一個單一字元字串。依據您設定的日誌旋轉類型的不同,日誌歸檔檔案的確切格式也會不同。


這些工具主要用於非 Solaris 平台。

對於 Solaris 而言,依預設不會啟用上述工具,您必須使用本端 Solaris 作業系統日誌管理工具,如 Solaris 9 上的 logadm。在 Solaris 8 上,用於日誌管理的優先公用程式為使用 Solaris cron 公用程式排程 logadm 的執行中描述的 cron 工具。


依據作業系統的不同,您可以用四種不同的方法執行日誌旋轉。下面一節中論述相關內容。主題包括︰

對於 UNIX 和 Windows︰

對於 Solaris 9

對於 Solaris (所有版本)

內部常駐程式日誌旋轉

內部常駐程式日誌旋轉可用於 UNIX 和 Windows 兩種作業系統。內部常駐程式日誌旋轉發生於 HTTP 常駐程式內,且僅能在伺服器實例啟動之時配置。使用此方法旋轉的日誌將以下列格式儲存︰

access.<YYYY><MM><DD><HHMM>

error.<YYYY><MM><DD><HHMM>

您可以指定作為旋轉日誌檔並啟動新日誌檔基礎的時間。例如,如果旋轉開始時間是 12:00 a.m.,旋轉間隔時間為 1440 分鐘 (一日),則不管目前時間為何,儲存完畢後均會立即建立新的日誌檔,並隨之收集旋轉開始時間之前的資訊。日誌檔每天在 12:00 a.m. 旋轉,存取日誌在 12:00 a.m. 標示,並另存為 access.199907152400。同樣,如果您將間隔時間設定為 240 分鐘 (四小時),四小時的間隔時間開始於 12:00 a.m.,這樣存取日誌檔將包含從 12:00 a.m. 到 4:00 a.m.、從 4:00 a.m. 到 8:00 a.m. 收集的資訊,以此類推。

如果啟用了日誌旋轉,日誌檔旋轉將於伺服器啟動之時開始。要旋轉的第一個日誌檔將從目前時間到下一個旋轉時間收集資訊。使用上述範例,如果您將開始時間設定在 12:00 a.m.,將旋轉間隔時間設定為 240 分鐘,目前時間為 6:00 a.m.,則要旋轉的第一個日誌檔將包含從 6:00 a.m. 到 8:00 a.m. 收集的資訊,下一個日誌檔將包含從 8:00 a.m. 到 12:00 p.m. (正午) 的資訊,以此類推。

基於排程程式的日誌旋轉

排程程式日誌旋轉,可讓您立即歸檔日誌檔或在特定日期的特定時間使用伺服器來歸檔日誌檔。若要立即歸檔日誌檔,請從管理介面的左窗格中選取 [Admin Server]。然後,按一下位於右頁面頂端的 [Logging] 連結。接著,按一下 [Log Rotation]。最後,按一下 [Archive]。

使用排程程式方法旋轉的日誌將另存為原始檔名,後隨旋轉該檔案的日期與時間。例如,若在 4:30 p.m. 旋轉 access,其可能成為 access.24Apr-0430PM

伺服器啟動時,將初始化日誌旋轉。如果開啟旋轉功能,Sun ONE Application Server 會建立有時間戳記的存取日誌檔,並且旋轉將在伺服器啟動之時開始。

開始旋轉後,若發生需要記錄到存取日誌檔或錯誤日誌檔的請求或錯誤,並且其發生在預先排程的「下一個旋轉時間」之後,則 Sun ONE Application Server 會建立新的時間戳記日誌檔。


對於 Windows 平台,以及對於導向至一個檔案 (非 Solaris 上的 syslog) 的伺服器記錄,您必須歸檔伺服器日誌。


若要歸檔日誌檔並指定使用 schedulerd 控制方法,請從管理介面左窗格中選取 [Admin Server]。然後,按一下位於右頁面頂端的 [Logging] 連結。接著,按一下 [Scheduler based Log Rotation] 方塊。最後,按一下 [OK]。將指示 scheduler 的目前狀態。

使用 Solaris logadm 公用程式的旋轉

Solaris 9 作業系統包含可用於執行含有記錄訊息之功能陣列的公用程式 logadm

尤其對於 Sun ONE Application Server,藉由 Solaris cron 公用程式執行該公用程式時,它可用於執行日誌旋轉工作,如使用 Solaris cron 公用程式排程 logadm 的執行中所述。

您可以指定下列關於日誌檔的日誌旋轉詳細資訊︰

上述詳細資訊在檔案 logadm.conf 中指定,該檔案位於︰

n /etc/logadm.conf

logadm.conf 範例檔案如下︰

# 版權所有 2001-2002 Sun Microsystems, Inc.。保留所有權利。

# 應依照授權條款使用。

#

# ident "@(#)logadm.conf 1.2 02/02/13 SMI"

#

# logadm.conf

#

# 系統日誌檔管理的預設設定。

# logadm(1M) 的 -w 選項是寫入至該檔案的優先

# 方法,

# 但如果您仍然手動編輯該檔案,請使用「logadm -V」檢查

# 錯誤。

#

# 該檔案中的行格式為︰

# <日誌名稱> <;選項>

# 對於此處列示的每個日誌名稱,均提供了 logadm 的

# 預設選項。logadm 指令行上提供的選項會置換

# 該檔案中的預設選項。

# # logadm 通常藉由 root 使用者 crontab (參閱 crontab(1)) 中

# 的項目,於每天上午提早執行。

#

/var/log/syslog -C 8 -P 'Tue Jul 9 10:10:00 2002' -a 'kill -HUP `cat

/var/run/syslog.pid`' /var/adm/messages -C 4 -P 'Tue Jul 30 10:10:00 2002' -a

'kill -HUP `cat /var/run/syslog.pid`' /var/cron/log -c -s 512k -t /var/cron/olog

/var/lp/logs/lpsched -C 2 -N -t '$file.$N'

#

# 下面的項目由 turnacct(1M) 使用

#

/var/adm/pacct -C 0 -N -a '/usr/lib/acct/accton pacct' -g adm -m 664 -o adm -p never

#

# 倘若 SUN One 應用程式伺服器預設日誌檔的目前大小為 >= 512k,

# 下面的項目將每天旋轉該日誌檔。歸檔舊日誌檔

# 之前,該項目會壓縮舊日誌檔,並在 30 天後刪除舊的

# 檔案。壓縮藉由 gzip(1) 完成,壓縮後的日誌檔將含有

# 字尾 .gz。

/var/appserver/domains/domain1/server1/logs/server.log -A 30d -s 512k -p 1d -z

或者,您可以透過互動式呼叫 logadm 指令,在特定檔案上啟動日誌旋轉。

下列範例會旋轉 syslog,並保留八個日誌檔。舊日誌檔位於目錄 /var/oldlogs 之下 (而非目錄 /var/log)︰

% logadm -C8 -t'/var/oldlogs/syslog.$n' /var/log/syslog

您也可以使用互動式指令行選項,在 /etc/logadm.conf 中指定的檔案上呼叫旋轉功能,但要使用不同的或修改後的選項。

如果在 /etc/logadm.conf 中及在指令行上都指定了選項,則首先套用 /etc/logadm.conf 檔案中的選項。因此,指令行選項將置換 /etc/logadm.conf 中的選項。以下為該情況的範例︰

% logadm /var/appserver/domains/domain1/server1/logs/server.log -p now

透過以上指令,便可使用 /etc/logadm.conf. 中為指定的檔案提供的所有選項,旋轉該檔案。


若一次指定多個選項,在選項之間便會有一個隱含的 AND。這意味著必須符合所有條件,才能旋轉日誌。


如需關於 logadm 公用程式及其選項的詳細資訊,請參考其線上援助頁,如下所述︰

% man logadm

OR

% logadm -h

使用 Solaris "cron" 公用程式的旋轉

在 Solaris 8 上,cron 公用程式可用於執行應用程式伺服器日誌旋轉。可以使用以下指令完成此動作︰

% crontab -e

該指令會啟動您最喜好的編輯程式 (由 env. 變數 $EDITOR 定義),從而您可以提供 cron 項目清單。


您結束編輯程式時,該指令也會呼叫 /etc/cron.d/logchecker 程序檔。此程序檔將為 cron 常駐程式提供 changed/new crontab 項目。因此,cron 常駐程式將立即接受以此方式加入的項目,並且日誌旋轉立即開始。

您無需重新啟動 cron 常駐程式,便可啟用日誌旋轉。


本章節包括下列主題:

關於 crontab 項目格式

crontab 檔案中,每行有六個欄位。這些欄位以空格或標籤分隔。前五個欄位為整數型樣,指定以下內容︰

使用此格式,您便可指定要在日/週/月之指定時間旋轉的存取檔案和事件日誌檔,並排程以重複旋轉。例如,

0 0 * * 1-5

/opt/SUNWappserver7/appserver/domains/domain1/server1/bin/rotatelogs

0 12 * * 1-5

/opt/SUNWappserver7/appserver/domains/domain1/server1/bin/rotatelogs

0 * * * 1-5

/opt/SUNWappserver7/appserver/domains/domain1/mainserver/bin/rotatelogs

從週一至週五,在每天的午夜和中午,這將旋轉 server1 的存取檔案和日誌檔;同時從週一至週五,每天每小時還會旋轉主伺服器的存取檔案和日誌檔一次。

crontab 檔案儲存於 /var/spool/cron/crontabs/ 之下。您可以以終端使用者或 root 使用者身份,建立 crontab 檔案。依據您的權限,使用下列指令,您會看到 crontab 項目︰

% crontab -l username

使用 Solaris cron 公用程式排程 logadm 的執行

cron 指令會啟動於指定日期和時間執行指令的過程。可以依據目錄 /var/spool/cron/crontabscrontab 檔案中的說明,指定正規排程的指令。

作為與 cron 配合使用的正規排程指令的範例,crontab 中的下列項目將在每天午夜啟動 logadm

0 0 * * 0-6 logadm

請注意,使用者可以使用 crontab(1) 指令提交自己的 crontab 檔案。

若要保留以 cron 執行的所有動作之日誌,必須在 /etc/default/cron 檔案中指定 CRONLOG=YES (依預設)。/etc/cron.d/logchecker 是用於檢查日誌檔是否超出系統 ulimit 的程序檔。如果超出,日誌檔將移至 /var/cron/olog 下。


透過指令行介面配置記錄

對於伺服器實例及虛擬伺服器實例,您可以藉由指令行來配置記錄服務的各個方面。


本章節的所有指令範例均假定已設定環境變數。


若要取得伺服器實例的所有 log-service 屬性︰

asadmin> get instance_name.log-service.*

在表日誌服務屬性中也定義了 log-service 屬性。

將該指令與指定的伺服器實例名稱配合使用的範例如下︰

asadmin> get server1.log-service.*

將傳回用於 server1 實例之記錄服務的屬性清單。使用 set 指令,可以配置列示的每個屬性。

若要為虛擬伺服器實例啟用虛擬伺服器 ID 記錄功能,請在終端機提示處輸入下列指令︰

asadmin> get instance_name.LogVirtualServerId

將傳回 LogVirtualServerId 的目前狀態。如果狀態為 false,您可以藉由 set 指令 (如下所述) 啟用它︰

asadmin> set instance_name.LogVirtualServerId=true

若要設定虛擬伺服器實例的日誌檔名稱,請使用 set 指令,如下所述︰

asadmin> set instance_name.virtual-server.<virtual server id>.logFile=<log file>

下面發佈的設定日誌檔指令用作範例︰

asadmin> set instance2.virtual-server.instance2.logFile=/space/IAs7se/appserver7/appserv/domains/domain1/instance2/logs/log

如需關於指令語法的更多資訊,請參閱指令行介面輔助說明。

如需關於使用 asadmin 的更多資訊,請參閱附錄 A「使用指令行介面」


透過管理介面配置記錄

本章節描述可以透過 Sun ONE Application Server 管理介面執行的工作,以為 server-wide (全域) 元素、指令和應用程式元件配置可用的記錄服務選項。

本章節包括下列主題:

配置日誌服務

日誌服務是 server.xml 檔案中 J2EE 服務元素種類內的元素,如「Sun ONE Application ServerConfiguration File Reference」所述。日誌服務用於配置包含下列日誌檔的系統記錄服務︰

系統記錄服務的配置包括指定日誌服務元素的屬性值。

圖 5-3 服務實例的日誌服務管理

圖顯示管理伺服器的記錄服務選項。

可以透過管理介面,配置日誌服務元素的下列屬性,如圖服務實例的日誌服務管理所示。

在管理介面的左窗格內,從伺服器實例的擴充樹階層中可以存取 [Log Service] 連結。下表描述可以配置的每個屬性,以及允許的預設值和值範圍。

表格 5-5 日誌服務屬性

屬性

預設值

描述

file

server.log1

(選擇性的) 置換伺服器日誌的名稱或位置。用來執行伺服器的任何使用者帳號均必須能夠寫入保留伺服器日誌的檔案和目錄。

層級

資訊

(選擇性的) 控制由其他元素記錄到伺服器日誌中的訊息預設類型。允許值依從最高到最低的次序,列示如下︰最精細更精細精細配置資訊警告伺服器警示嚴重

每個值都記錄用於所有較低值的所有訊息,例如,「最精細」記錄所有訊息,「嚴重」僅記錄「嚴重」訊息。預設值為「資訊」,其記錄所有「資訊」「警告」「伺服器」「警示」「嚴重」訊息。

log-stdout

True

(選擇性的) 如果為 true,則將 stdout 輸出重新導向至伺服器日誌。合法值為 onoffyesno10truefalse

log-stderr

True

(選擇性的) 如果為 true,則將 stderr 輸出重新導向至伺服器日誌。合法值為 onoffyesno10truefalse

echo-log-messages-to-stderr

True

(選擇性的) 如果為 true,則將日誌訊息發送至伺服器日誌以及 stderr。合法值為 onoffyesno10truefalse

create-console

False

(選擇性的) 如果為 true,將在 Windows 作業系統上建立主控台視窗以輸出 stderr。合法值為 onoffyesno10truefalse

log-virtual-server-id

False

(選擇性的) 如果為 true,虛擬伺服器 ID 將顯示在虛擬伺服器日誌中。如果多個 virtual-server 元素共用同一個日誌檔,這些功能將很有用。

use-system-log

False

如果為 true,將使用 UNIX syslog 服務或 Windows 事件記錄功能來產生和管理日誌。

1在伺服器元素之 log-root 屬性指定的目錄中。

為應用程式伺服器元件和子系統配置記錄

本章節描述如何為 Sun ONE Application Server 元件和子系統啟用記錄及選取日誌層級。請注意,Java Transaction Service (JTS) 元件有多個日誌檔。由於多數元件和子系統在配置日誌層級時所採用的處理方法相同,所以選取日誌層級的程序僅一次證明,適用於指明的元件和子系統群組過程。

下列元件和子系統可以利用伺服器訊息的選擇記錄功能。您可以藉由對本指南其他主題的參考 (根據指示) 來瞭解元件和子系統。

指定日誌層級的步驟

若要為 ORB、Web 容器、EJB 容器、MDB 容器 (在 EJB 容器內)、Java 作業事件服務以及 JMS 服務指定日誌層級,請執行以下程序︰

  1. 在管理介面的左窗格內,展開 Sun ONE Application Server 實例,以顯示您要編輯的元件和子系統。
  2. 按一下所需元件或子系統的連結。
  3. 在管理介面的右頁面內,從 [Log Level] 下拉式清單中選取下列日誌層級參數之一。在關於日誌層級中描述日誌層級。

指定日誌檔的步驟︰(虛擬伺服器)

若要指定日誌檔,請執行以下程序︰

  1. 在管理介面的左窗格內,展開 Sun ONE Application Server 實例,以顯示 HTTP 伺服器子系統。
  2. 按一下 [HTTP Server] 連結。
  3. 按一下 [Virtual Server] 連結。
  4. 按一下所需伺服器實例連結。
  5. 在管理介面右頁面內,於 [General] 標籤下的 [Log File] 欄位中,輸入所需目錄路徑和檔名。

指定作業事件日誌位置的步驟︰(Java Transaction Service)

若要指定作業事件日誌位置,請執行以下程序︰

  1. 在管理介面的左窗格內,展開 Sun ONE Application Server 實例,以顯示作業事件服務子系統。
  2. 按一下 [Transaction Service] 連結。
  3. 在管理介面右頁面內,於 [Advanced] 欄位群組下的 [Transaction Log Location] 欄位中,輸入所需目錄路徑和檔名。

配置錯誤記錄的指令

Sun ONE Application Server 包括用於 init.conf 檔案的錯誤記錄指令。包括下列指令︰

「Sun ONE Application Server Configuration File Reference」中詳細描述針對 init.conf 的所有指令。


檢視存取日誌檔

您可以檢視管理伺服器的 http 日誌檔以及 Sun ONE Application Server 實例的 http 日誌檔。

若要檢視管理伺服器的 http 日誌,請從管理介面的左窗格中選取 [Admin Server],然後從右頁面中選擇 [Logging] 標籤。[View HTTP Access Log] 連結即會顯示。選取此連結以檢視已配置的存取日誌。圖「管理伺服器檢視 HTTP 存取日誌」中展示已顯示日誌的範例。

圖 5-4 管理伺服器檢視 HTTP 存取日誌

圖顯示管理伺服器的檢視 HTTP 日誌。

若要檢視應用程式伺服器實例的存取日誌,請在管理介面左窗格中按一下所需的伺服器實例。按一下右窗格中的 [Logging] 標籤。按一下 [View Access Log] 連結,以顯示為該伺服器實例配置的作用中存取日誌。圖應用程式伺服器實例檢視存取日誌中顯示範例。

圖 5-5 應用程式伺服器實例檢視存取日誌

圖顯示應用程式伺服器實例的檢視存取日誌。


檢視事件日誌檔

您可以檢視管理伺服器的作用中事件日誌檔,以及 Sun ONE Application Server 實例的作用中事件日誌檔。

若要檢視管理伺服器的事件日誌,請從左窗格中選取 [Admin Server],然後從右頁面中選擇 [Logging] 標籤。[View Event Log] 連結將顯示。選取此連結以檢視已配置的事件日誌。圖「管理伺服器檢視事件日誌」中展示已顯示日誌的範例。

圖 5-6 管理伺服器檢視事件日誌

圖顯示管理伺服器檢視事件日誌。

若要檢視應用程式伺服器實例的事件日誌,請在管理介面左窗格中按一下所需的伺服器實例,然後從右窗格中選擇 [Logging] 標籤。[View Event Log] 連結將顯示。選取此連結以檢視已配置的事件日誌。圖「應用程式伺服器實例檢視事件日誌」中展示已顯示日誌的範例。

圖 5-7 應用程式伺服器實例檢視事件日誌

圖顯示應用程式伺服器實例的檢視事件日誌。


設定日誌偏好設定

在安裝期間,將為伺服器建立名為 access 的存取日誌檔。您可以透過指定是否記錄存取、記錄使用什麼格式,以及當用戶端存取資源時伺服器是否應花時間查找用戶端領域名稱,自訂針對任何資源的存取記錄。

若要對多個虛擬伺服器使用一個日誌檔,應該在事件日誌的 server.xml 檔案中開啟 LogVsId。請參閱「Sun ONE Application Server Configuration File Reference」以取得詳細資訊。或者,可在管理介面的 [Admin Server Logging] 標籤中開啟 LogVsID

執行以下步驟,藉由管理介面啟用日誌虛擬伺服器 ID。重新啟動管理伺服器後,變更將生效。

  1. 在管理介面左窗格中按一下 [Admin Server]。
  2. 在右頁面中按一下 [Logging] 標籤。
  3. 在日誌虛擬伺服器 ID 的核取方塊內按一下。
  4. 按一下 [Save] 按鈕,將變更套用於 Sun ONE Application Server。

該設定需要重新啟動 Sun ONE Application Server,變更才能生效。


執行日誌分析程式

flexanlg 是用於日誌檔報告的日誌分析程式工具。僅當記錄導入至檔案 (非 syslog) 時,才能使用日誌分析程式。

使用日誌分析程式可以產生關於預設伺服器的統計資料,例如活動摘要、最常存取的 URL、一日內反復存取伺服器的次數,等等。日誌分析程式能產生預設伺服器的統計資料,但無法產生虛擬伺服器的統計資料。不過,如檢視存取日誌檔所述,可以檢視每個虛擬伺服器的統計資料。


執行日誌分析程式之前,您必須旋轉伺服器日誌。如需更多資訊,請參閱日誌檔管理


您可以透過執行位於目錄 install_dir/bin/flexanlg 下的工具 flexanlg,從指令行執行日誌分析程式。

若要執行 flexanlg,請於指令提示處鍵入下列指令與選項︰

flexanlg [ -P ] [-n name] [-x] [-r] [-p order] [-i file]* [ -m metafile ]* [ o file][ c opts] [-t opts] [-l opts] [-h help]

指令選項 (有 * 標記的選項可以重複)。

-i filename

輸入日誌檔

-P

代理日誌格式

-n servername

伺服器名稱

-x

以 HTML 輸出

-r

將 IP 位址解析為主機名稱

-p [ c, t, l ]

輸出次序,預設次序為計數、時間統計資料、清單

-m filename

中繼檔案

-o filename

輸出日誌檔;預設檔案為 stdout

-c [ h, n, r, f, e, u, o, k, c, z ]

對這些項目計數;預設為︰h, n, r, e , u, o, k, c

-t [ sx, mx, hx, xx, z ]

尋找一般統計資料;預設為︰s5m5h24x10

-l [ cx, hx ]

製作指定子選項的清單;預設為︰c+3h5

EXAMPLE:使用 flexanlg 指令

flexanlg -i /var/opt/SUNQappserver7/domains/domain1/server1/logs/access


執行日誌分析程式之前,應歸檔伺服器日誌。



檢視事件 (Windows 2000 Pro)

除了將錯誤記錄到 server.log 檔案中,Sun ONE Application Server 還會把嚴重的系統錯誤記錄到事件檢視器內。事件檢視器可讓您監視系統上的事件。使用事件檢視器,可查看開啟錯誤日誌之前可能發生的基礎配置問題所導致的錯誤。

若要使用事件檢視器,請執行下列步驟︰

  1. 從 [開始] 功能表中,選取 [程式集],然後選取 [管理工具]。在 [管理工具] 程式群組中選擇 [事件檢視器]。
  2. 從 [日誌] 功能表中選擇 [應用程式]。
  3. [應用程式] 日誌將顯示於事件檢視器中。來自 Sun ONE Application Server 的錯誤有來源標籤 https-serverid

  4. 從 [檢視] 功能表中選擇 [尋找],在日誌中搜尋其中一個標籤。從 [檢視] 功能表中選擇 [重新顯示],查看更新後的日誌項目。

如需關於事件檢視器的更多資訊,請參考您的系統說明文件。



上一個      目錄      索引      下一個     


Copyright 2003 Sun Microsystems, Inc. 。版權所有。