Sun ONE ロゴ      前へ      目次      索引      次へ     

Sun ONE Application Server 7, Enterprise Edition 管理者ガイド

第 5 章
ログの使用

この章では、Sun ONE Application Server のログ機能について解説します。また、ログを利用可能なコンポーネントについても説明します。

この章では次のトピックについて説明します。


ログについて

アプリケーションでログを使用すると、デバッグと診断のための便利なツールとなります。また、開発者の生産性を高めるためにも使用できます。アプリケーションサーバーの独自のログ出力を利用すると、サーバーの設定や配備に関する問題の特定と診断を行うことができます。

Sun ONE Application Server のログでは、Java のログ API が使用されます。Sun ONE Application Server は、logs ディレクトリにある 2 つのログファイル access.log および server.log にロギング情報を収集して保存します。独自のログファイルにログを収集することもできます。

ログに記録されたメッセージは、単なるメッセージ以上の情報を提供します。たとえば、次のような追加情報があります。

追加メッセージ情報の種類と順序は、ログに使用されるプラットフォームと、そのプラットフォームで有効なログサービスによって変わります。ログメッセージの仮想サーバー ID を有効にする方法については、「ログサービスの設定」を参照してください。


UNIX プラットフォームでのログ

この節では、ログファイルの作成方法について説明します。次の項目で説明します。

server.log でのデフォルトのログ

UNIX プラットフォームでは、ログファイルは log サブディレクトリの server.log に作成されます。インスタンスのサーバーコンポーネントと仮想サーバーのすべてから得られたログが、このファイルに収集されます。

デフォルトでは、サーバー全体のログレベルを設定できます。ただし、デフォルトのログレベルをオーバーライドして、特定のサブシステムについて設定することも可能です。また、stdoutstderr をサーバーのイベントログへリダイレクトすることや、オペレーティングシステムのシステムログにログを出力することもできます。さらに、stdoutstderr の内容をサーバーのイベントログに出力することもできます。デフォルトでは、ログメッセージは、指定されたサーバーログファイルと stderr に送られます。

その他、ログメッセージに仮想サーバー ID を加える機能もあります。これは、複数の仮想サーバーを使用する際、同じログファイルへメッセージを記録するのに便利な機能です。ログメッセージをシステムログに書き込むこともできます。その場合、server.log ファイルではログが記録されません。その代わりに、UNIX の syslog ログサービスを使ってログの作成と管理が行われます。

また、server.xml 属性を使用して、このファイルの内容を管理することもできます。server.xml ファイルの詳細は、『Sun ONE Application Server 管理者用設定ファイルリファレンス』を参照してください。

server.log の例

server.log の例を次に示します。

タイムスタンプ、ログレベル、(PID vsid (オプション)): messageID: メッセージ

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

[01/Aug/2002:11:39:36] INFO ( 1224):CORE5076:Using [Java HotSpot(TM) 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]]

ログファイルのデフォルトの保存場所の変更

エンタープライズアプリケーションまたは Web アプリケーションを配備するときに、アプリケーション内で JSP をコンパイルしておくことができます。コンパイル済み JSP に関するログメッセージは、デフォルトで管理サーバーのログファイル (通常は {domain_root}/{domain_name}/admin-server/logs/server.log) 内に格納されます。これはデフォルトのログオプションです。

すべてのメッセージが同じファイルに記録されるため、コンパイル済み JSP を使ってアプリケーションを配備する際に発生した例外やエラーが、その共通のログファイル内の膨大なメッセージの中で見失われる危険性があります。複数のアプリケーションを指定されたドメインに属する複数のインスタンスに配備する場合、管理サーバーのログメッセージを注意深く調べて、特定のアプリケーションの JSP に関する例外が発生していないか確認する必要があります。

したがって、コンパイル済み JSP を使って配備されたアプリケーションに関するメッセージは、管理サーバーの server.log ファイルではなく、サーバーインスタンスの server.log ファイルに記録することをお勧めします。

Sun ONE Application Server 7, Enterprise Edition インスタンスの server.log ファイルにログメッセージをリダイレクトするには、Administrator Interfaceでログファイルのパスを変更します。詳細は、「ログサービスの設定」を参照してください。

syslog を使用したログ

ログの一元化が必要となるような安定した動作環境には、syslog の使用が適しています。診断やデバッグのためにログの出力が頻繁に要求されるような環境では、個々のサーバーインスタンスや仮想サーバーのログのほうが管理が容易になります。


  • サーバーインスタンスおよび管理サーバーのログデータをすべて 1 つのファイルに格納すると、読み取りやデバッグが困難になります。問題なく動作している配備済みアプリケーションだけに、syslog のマスターログファイルを使用することをお勧めします。
  • ログに記録されたメッセージには、Solaris デーモンアプリケーションによるその他のログがすべて混在します。

syslog ログファイルと syslogd を連動させ、システムログデーモンとともに使用する場合は、syslog.conf ファイル設定して、次のことを実行できます。

syslog の設定

/etc ディレクトリの syslog.conf を設定して、重要度の低いメッセージを個別のファイルに収集すると、管理や読み取りが容易になります。

syslog を設定するには、次の手順に従います。

  1. 重要度の低いメッセージを個別のファイルに保存するために、Solaris の syslog.conf ファイルに次のコマンドを追加します。
  2. daemon.debug  /var/adm/iasdebug

  3. syslogd にハングアップシグナルを送ります。次のコマンドを使用します。
  4. kill -HUP <PID syslogd>

  5. 管理インタフェースで管理サーバーに移動し、「Write to system log (システムログに書き込み)」オプションを選択します。変更を保存し、適用します。管理サーバーを再起動して、変更を有効にします。

Solaris の syslog.conf ファイルの設定例を次に示します。

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

#

# Copyright (c) 1991-1998 by Sun Microsystems, Inc.

# All rights reserved.

#

# syslog configuration file.

#

# This file is processed by m4 so be careful to quote (`') names

# that match m4 reserved words. Also, within ifdef's, arguments

# containing commas must be quoted.

#

*.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             *

# if a non-loghost machine chooses to have authentication messages

# sent to the loghost machine, un-comment out the following line:

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

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

#

# non-loghost machines will use the following lines to cause "user"

# log messages to be logged locally.

#

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 固有のメッセージと、特定のサーバーや仮想サーバーインスタンスのメッセージを区別するために、次のような情報が付加されます。

サーバーインスタンスと仮想サーバーインスタンスの両方に対するログサービスを、server.xml ファイルで設定できます。仮想サーバーインスタンスのログサービス設定については、「仮想サーバーとログについて」を参照してください。サーバーインスタンスのログサービス設定については、「管理インタフェースによるログの設定」を参照してください。

ログレベルについては、適用されるサブシステムおよびコンポーネントの管理インタフェースで設定します。

UNIX の動作環境で使用される syslog のログメカニズムの詳細は、端末プロンプトで次の man コマンドを入力してください。

man syslog

man syslogd

man syslog.conf

syslog メッセージの例

syslog メッセージの例を次に示します。

タイムスタンプ,ホスト名 [インスタンス名], [サブシステム], [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


ログレベルの使用

この節では、ログレベルと、Sun ONE Application Server の各サブシステムにログレベルを割り当てる方法について説明します。

次の項目があります。

ログレベルについて

Sun ONE Application Server は、標準 JDK 1.4 のログレベルを使用して、ログでの情報選択を行います。Sun ONE Application Server には、標準 JDK のログレベルに加えて、server.log とのマッピングをより直観的にすることと、Solaris との統合を密接にすることを目的に設計されたログレベルが追加されています。

ログに記録されたメッセージは、server.log に配信されるとき、「Sun ONE Application Server のログレベルの server.log へのマッピング」の定義に従って、ログレベルにマップされます。


管理サーバーおよびデフォルトのアプリケーションサーバーインスタンスに対する server.log ファイル (または syslog) のデフォルトのログレベルは、INFO です。アプリケーションサーバーインスタンスでデフォルトのログレベルを使用する場合は、エラーと情報メッセージが記録されます。こうしたメッセージを記録しない場合は、server.xml ファイルのログレベル、または管理サーバーの管理インタフェースとデフォルトのサーバインスタンスに設定されているログレベルを、WARNING または SEVERE に変更します。

サーバーに対するデフォルトのログレベルは、log-service 要素によって設定できます。この設定は、ログレベルが「default」に設定されているすべての要素に反映されます。


ログを有効に設定すると、Sun ONE Application Server サブシステムごとに、ログレベルを割り当てることができます。ログレベルは、実行時に記録されるメッセージ情報の量を調整するのに役立ちます。ログレベルは、目的のサブシステムの server.xml ファイルで指定されます。ログレベルを指定するには、選択したサブシステムの管理インタフェースを使用するか、server.xml ファイルを直接編集して、選択したサブシステムに適切なログレベルを設定します。


警告

server.xml ファイルを手動で編集すると、構文エラーでサーバーの起動が失敗する可能性があります。設定ファイルを手動で編集する方法については、『Sun ONE Application Server 管理者用設定ファイルリファレンス』の「設定ファイルの手動編集」を参照してください。


管理インタフェースでログレベルを設定する例は、「JMS サービスのログレベル」の図に示されています。各サブシステムやコンポーネントに対するログレベルを server.xml ファイルで直接設定する方法については、『Sun ONE Application Server 管理者用設定ファイルリファレンス』を参照してください。

「ログレベル」の表に示されているログレベルは、JDK 1.4 ロギング API 仕様の要件に合致しています。ただし、ALERT と FATAL は Sun ONE Application Server 固有のログレベルであり、JDK 1.4 ロギング API では実装されていません。

次の表は、Sun ONE Application Server のメッセージに割り当てられたログレベルを重要度の低いものから順に表しています。左側の列は Sun ONE Application Server 7, Enterprise Edition でのログレベル指定を示し、右側の列は各ログレベルについての簡単な説明です。

表 5-1 ログレベル

ログレベル

説明

FINEST
FINER
FINE

デバッグメッセージの冗長性の程度を示すメッセージ。FINEST は最大の冗長性を示す

CONFIG

さまざまな静的設定情報に関連するメッセージ。特定の設定に関連する問題をデバッグする場合に使用できる

INFO

主にサーバー設定またはサーバーの状態に関する通知メッセージ。すぐに対処する必要があるエラーではない

たとえば、設定の変更通知が受信され、メッセージブローカーに関する新しいトピックが作成されたというメッセージなどが記録される

WARNING

警告を示すメッセージ。通常、メッセージとともに例外が発行される

SEVERE

通常のアプリケーションの実行を阻害するような極めて重要なイベントを示すメッセージ

ALERT*

ユーザーに特定の対処を行うように警告するメッセージ

FATAL*

サーバーの実行を継続するには適していない致命的なエラーを示すメッセージ。サーバーのクラッシュの直前に表示される典型的なメッセージ

* Sun ONE Application Server に固有のログレベル


INFO よりも重大度の低いログレベル (FINEST、FINER、FINE、および CONFIG) のメッセージは、デバッグに関係する問題を解決するための情報が含まれ、テクニカルサポートに問い合わせる際に有効となります。通常、ログレベルが INFO より低いメッセージは、ローカライズされません。


syslog 設定に使用するログレベル

syslog の使用時に Sun ONE Application Server 7, Enterprise Edition で設定できるログレベルを、次の表に示します。左側の列は Sun ONE Application Server 7, Enterprise Edition でのログレベル指定を示し、右側の列は syslog 機能で対応するログレベルを示します。

表 5-2 Sun ONE Application Server のログレベルの server.log へのマッピング

Sun ONE Application Server

syslog レベル

FINEST

LOG_DEBUG

FINER

LOG_DEBUG

FINE

LOG_DEBUG

CONFIG

LOG_INFO

INFO (デフォルト)

LOG_INFO

WARNING

LOG_WARNING

SEVERE

LOG_ERR

ALERT

LOG_ALERT

FATAL

LOG_CRIT


仮想サーバーとログについて

Sun ONE Application Server には、仮想サーバーインスタンスを設定できます。アプリケーションサーバーインスタンス内の各仮想サーバーには、独自の ID があり、独自のログファイルを設定することもできます。仮想サーバーごとにログファイルを割り当てると、特定のトランザクションおよびリソースのサーバーアクティビティを追跡しやすくなります。

管理インタフェースで仮想サーバーのログファイル名を指定するには、ディレクトリツリーから「HTTP Server (HTTP サーバー)」のリンクへ移動し、仮想サーバーのフォルダ下のサーバーインスタンス要素を開いて、右フレームに「General (一般)」タブを表示します。「Log File (ログファイル)」フィールドに、仮想サーバーのログファイルのパスと名前を入力します。「仮想サーバーログファイル名の設定」の図は、設定する場所を示しています。


ログを有効にしてアプリケーションを実行すると、アプリケーションからのログメッセージには、仮想サーバー 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 管理者用設定ファイルリファレンス』を参照してください。各サブシステムは、JDK 1.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>

Object Request Broker (ORB)

<iiop-service>

デフォルトハンドラ1

<log-service>

1デフォルトハンドラは、特定のサブシステム (ユーティリティクラスなど) に関連付けられていないすべての server.xml エントリに対するデフォルトのロガーになります。

図 5-2 JMS サービスのログレベル

この図は、JMS サービスのログレベルを設定する場所を示しています。

「ログレベル」の表は、Sun ONE Application Server のメッセージに割り当てられたログレベルを重要度の低いものから順に示しています。これらのログレベルは、JDK 1.4 ログ API 仕様の要件に合致しています。ただし、ALERT と FATAL は Sun ONE Application Server 固有のログレベルであり、JDK 1.4 ログ API ではサポートされていません。


クライアントサイドのログについて

ACC (Application Client Container) には独自のログサービスがあり、ログはローカルファイルにのみ記録されます。

通常、ACC はアプリケーションサーバーとは別のホストで、独自のプロセスによって動作します。そのため、独自のログインフラストラクチャと独自のログファイルを持ちます。ACC の設定は、sun-acc.xml ファイルに保持されます。

ACC のクライアントサブシステムログ要素は、log-service です。要素と属性を次の表に示します。それぞれ、指定のデフォルト値と値の範囲があります。

表 5-4 ACC のログ要素

要素

属性

説明

log-service

file

ACC ログファイル。空または存在しない場合、stdout に記録される

log-service

level

ACC ログレベル

sun-acc.xml ファイルの例は、『Sun ONE 管理者用設定ファイルリファレンス』に記載されています。


アプリケーションログ出力およびサーバーログ出力のリダイレクト

アプリケーションコンポーネントと J2EE アプリケーションの単体テストの実行時には、開発者のためにアプリケーションログとサーバーログを利用できるようにしておく必要があります。UNIX プラットフォームでは、サーバーインスタンスを起動した端末ウィンドウの stderr にログメッセージがストリーム出力されたり、コマンド「tail -f」によってログファイルに書き込まれたメッセージが参照できるといった単純な設定が効果的でしょう。

server.xml ファイル内の一部の属性を stdout および stderr に設定すると、記録されたメッセージをログファイルや端末ウィンドウに出力することができます。stdout および stderr の詳しい使用方法については、『Sun ONE Application Server 管理者用設定ファイルリファレンス』を参照してください。

ログサービスについては、「ログサービスの設定」を参照してください。


ログファイルの管理

アクセスログファイルとイベントログファイル (server.log) が自動的にアーカイブされるように設定できます。指定した時刻、または指定した間隔で、ログがローテーションされます。Sun ONE Application Server は、古いログファイルに保存日時を含めた名前を付けて保存します。


複数の仮想サーバーを作成し、仮想サーバーごとにログファイルを関連付けることができますが、仮想サーバーごとのログのローテーションはサポートされていません。


たとえば、1 時間おきにアクセスログファイルをローテーションし、このファイルを「access.199907152400」という名前で保存するように設定することができます。ログファイルの名前は、年、月、日、および 24 時間形式の時間が連結された単一の文字列になります。ログアーカイブファイルの形式は、設定したログローテーションの種類によって異なります。


これらの機能は、主に Solaris 以外のプラットフォームに提供されます。

Solaris では、これらの機能はデフォルトでは有効になっていません。Solaris のネイティブのオペレーティングシステムログ管理機能 (Solaris 9 では logadm) を使用する必要があります。Solaris 8 でログ管理に適したユーティリティは cron 機能です (「Solaris cron ユーティリティを使用した logadm のスケジュール実行」参照)。


ログローテーションには、オペレーティングシステムによって 4 種類の方法があります。以下、これらの方法について説明します。説明する項目は次のとおりです。

Solaris 9

Solaris (任意のバージョン)

内部デーモンログローテーション

内部デーモンログローテーションは、UNIX オペレーティングシステムで使用できます。内部デーモンログローテーションは HTTP デーモン内で実行され、サーバーインスタンスの起動時だけに設定できます。この方法でローテーションされるログは、次の形式で保存されます。

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

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

ログファイルをローテーションし、新しいログファイルの使用を開始するベースとして使用される時間を指定できます。たとえば、ローテーションの開始時刻が午前 0 時で、ローテーションの間隔が 1440 分 (1 日) の場合、現在時刻に関係なく保存直後に新しいログファイルが作成され、ローテーションの開始時刻まで情報を収集します。ログファイルは毎日午前 0 時にローテーションされるため、アクセスログのタイムスタンプは午前 0 時、ファイル名は access.199907152400 のようになります。同様に、ローテーションの間隔を 240 分 (4 時間) に設定した場合、午前 0 時から 4 時間おきにログがローテーションされます。アクセスログファイルには、午前 0 時から午前 4 時まで、午前 4 時から午前 8 時まで、という順に 4 時間で収集された情報が保存されます。

ログローテーションが有効になっている場合は、サーバーの起動時にログファイルのローテーションが開始されます。ローテーションされる最初のログファイルでは、現在時刻から次のローテーション時刻までの間の情報が収集されます。前の例を使用して、開始時刻を午前 0 時に設定し、ローテーションの間隔を 240 分に設定した場合、現在時刻が午前 6 時とすると、ローテーションされる最初のログファイルには午前 6 時から午前 8 時の間に収集された情報が保存され、次のログファイルには午前 8 時から午後 12 時 (正午) までの間に収集された情報が保存されます。

スケジューラベースのログローテーション

スケジューラによるログローテーションでは、すぐにログファイルをアーカイブすることも、サーバーで特定の日の特定の時間にログファイルをアーカイブするように設定することもできます。ログファイルをその場でアーカイブするには、管理インタフェースの左側のペインで「Admin Server (管理サーバー)」を選択します。次に、右のページの最上部にある「Logging (ログ)」リンクをクリックします。次に、「Log Rotation (ログローテーション)」をクリックします。最後に、「Archive (アーカイブ)」をクリックします。

スケジューラを使用する方法でローテーションされるログは、元のファイル名の後にローテーションされた日時が追加された名前で保存されます。たとえば、午後 4 時 30 分にローテーションされる accessaccess.24Apr-0430PM という名前になります。

ログローテーションは、サーバーの起動時に初期化されます。ローテーションを有効にすると、Sun ONE Application Server によってタイムスタンプ付きのアクセスログファイルが作成され、サーバーの起動時にローテーションが行われます。

ローテーションが開始されると、事前にスケジューリングされている「次のローテーション時刻」が過ぎてからアクセスログファイルまたはエラーログファイルに記録する必要のある要求やエラーが発生した場合、Sun ONE Application Server により新しいタイムスタンプ付きのログファイルが作成されます。


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 ファイルを、次に示します。

# Copyright 2001-2002 Sun Microsystems, Inc. All rights reserved.

# Use is subject to license terms.

#

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

#

# logadm.conf

#

# Default settings for system log file management.

# The -w option to logadm(1M) is the preferred way to write to this

# file,

# but if you do edit it by hand, use "logadm -V" to check it for

# errors.

#

# The format of lines in this file is:

# <logname> <;options>

# For each logname listed here, the default options to logadm

# are given. Options given on the logadm command line override

# the defaults contained in this file.

# # logadm typically runs early every morning via an entry in

# root's crontab (see 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'

#

# The entry below is used by turnacct(1M)

#

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

#

# The entry below will rotate SUN One application server's default logfile

# every day provided the current logfile size is >= 512k. It will compress

# the old log file before archiving it and also delete the old files after 30

# days. The compression is done with gzip(1) and the resulting log file has

# the suffix of .gz.

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

上記とは別に、logadm コマンドを対話形式で呼び出すことにより、特定のファイルでログローテーションを起動することもできます。

次の例では、syslog をローテーションし、8 個のログファイルを保持します。古いログファイルは、/var/log ディレクトリではなく、/var/oldlogs ディレクトリに格納されます。

% 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

または

% logadm -h

Solaris cron ユーティリティを使用したローテーション

Solaris 8 では、cron ユーティリティを使用して、アプリケーションサーバーのログローテーションを実行できます。次のコマンドを使用します。

% crontab -e

環境変数 $EDITOR で定義されたエディタが起動し、cron エントリのリストが表示されます。


このコマンドでは、エディタの終了後、すぐに /etc/cron.d/logchecker スクリプトが実行されます。このスクリプトは、変更または追加された crontab のエントリを cron デーモンに送ります。cron デーモンはこの方法で追加されたエントリをただちにピックアップして、ログローテーションがすぐに起動します。

ログローテーションを有効にするために cron デーモンを再起動する必要はありません。


この節には次の項目があります。

crontab エントリの形式について

crontab ファイルの各行には、6 個のフィールドを設定します。各フィールドは、空白またはタブで区切られます。最初の 5 個のフィールドは、次の項目を指定する整数値です。

この形式を使用して、アクセスログファイルとイベントログファイルのローテーション間隔と、ローテーションの繰り返しのスケジュールを設定します。たとえば、

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 のアクセスログファイルとイベントログファイルが、月曜日から金曜日までの毎日、午前 0 時と正午にローテーションされます。mainserver のログファイルは、月曜日から金曜日までの毎日、1 時間ごとにローテーションされます。

crontab ファイルは、/var/spool/cron/crontabs/ に格納されます。crontab ファイルの作成は、エンドユーザーとしても root としても行うことができます。ユーザーの権限によって、次のコマンドで見ることのできる crontab エントリは異なります。

% crontab -l username

Solaris cron ユーティリティを使用した logadm のスケジュール実行

cron コマンドは、指定された日時にコマンドを実行するプロセスを起動します。/var/spool/cron/crontabs ディレクトリの crontab ファイルで見つかった命令に基づいて、コマンドが定期的なスケジュールで設定されます。

cron で使用される定期的にスケジュールされたコマンドの例として、次の crontab エントリは logadm を毎日午前 0 時に起動します。

0 0 * * 0-6 logadm

ユーザーは、 crontab(1) コマンドを使用する独自の crontab ファイルを送信できることに注意してください。

cron が実行するすべてのアクションに関するログを保持するには、CRONLOG=YES (デフォルト) を /etc/default/cron ファイルで指定する必要があります。/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/appse rv/domains/domain1/instance2/logs/log

コマンド構文の詳細は、コマンド行インタフェースのヘルプを参照してください。

asadmin の使用方法の詳細は、付録 A 「コマンド行インタフェースの使用」を参照してください。


管理インタフェースによるログの設定

この節では、Sun ONE Application Server の管理インタフェースを使って、サーバーワイド (グローバル) な要素、指令、およびアプリケーションコンポーネントに適用できるログサービスオプションを設定する方法を説明します。

この節には次の項目があります。

ログサービスの設定

ログサービスは、server.xml ファイルの J2EE サービス要素カテゴリ内の要素で指定します。『Sun ONE Application Server 管理者用設定ファイルリファレンス』を参照してください。ログサービスは、次のログファイルを含むシステムログサービスを設定するために使用されます。

システムログサービスの設定では、ログサービス要素の属性値を指定します。

図 5-3 サービスインスタンスのログサービス管理

この図は、管理サーバーのログサービスオプションを示しています。

「サービスインスタンスのログサービス管理」の図で示されるように、管理インタフェースでは、次に示すログサービス要素の属性を設定できます。

ログサービスのリンクには、管理インタフェースの左側のペインで、サーバーインスタンスのツリー階層を展開するとアクセスできます。次の表に、設定可能な属性とそのデフォルト値および許値の範囲を示します。

表 5-5 ログサービス属性

属性

デフォルト値

説明

file

server.log1

省略可能。サーバーログの名前または場所をオーバーライドする。サーバーログが格納されているファイルおよびディレクトリは、サーバーを実行するユーザーアカウントに関係なく、常に書き込み可能な状態にしておくことが必要

level

INFO

省略可能。別の要素によってサーバーログに記録されるメッセージのデフォルトタイプを制御する。有効な値 (降順) は以下のとおり。FINESTFINERFINECONFIGINFOWARNINGSEVEREALERTFATAL

各値は、それよりも低いレベルの値のすべてのメッセージをログに記録する。たとえば、FINEST ではすべてのメッセージが記録され、FATAL では FATAL メッセージだけが記録される。デフォルト値は INFO であり、INFOWARNINGSEVEREALERTFATAL のすべてのメッセージがログに記録される

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 の場合、stderr 出力用に Windows オペレーティングシステムのコンソールウィンドウが作成される。有効な値は onoffyesno10truefalse

log-virtual-server-id

False

省略可能。true の場合、仮想サーバー ID が仮想サーバーログに表示される。複数の virtual-server 要素が同じログファイルを共有している場合に有用

use-system-log

False

true の場合、UNIX syslog サービスを使ってログの作成と管理が行われる

1server 要素の log-root 属性で指定されたディレクトリ

アプリケーションサーバーコンポーネントおよびサブシステムのログ設定

この節では、ログを有効にし、Sun ONE Application Server コンポーネントおよびサブシステムのログレベルを選択する方法について説明します。Java トランザクションサービスコンポーネントには、複数のログファイルがあります。ログレベルの設定方法は、ほとんどのコンポーネントおよびサブシステムに共通です。そのため、ログレベルを選択する手順は、指定したコンポーネントおよびサブシステムのグループについて 1 回だけ記載します。

次のコンポーネントおよびサブシステムでは、サーバーメッセージのログ方法を選択できます。これらのコンポーネントおよびサブシステムの詳細は、このマニュアルで説明されているその他の項目を参照してください。

ログレベルの指定方法

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 (HTTP サーバー)」リンクをクリックします。
  3. 「Virtual Server (仮想サーバー)」リンクをクリックします。
  4. 編集するサーバーインスタンスのリンクをクリックします。
  5. 管理インタフェースの右側のペインの「General (一般)」タブで、「Log File (ログファイル)」フィールドに編集するディレクトリパスとファイル名を入力します。

トランザクションログの場所の指定方法 (Java トランザクションサービス)

トランザクションログの場所を指定するには、次の手順に従います。

  1. 管理インタフェースの左側のペインで、Sun ONE Application Server インスタンスを展開し、トランザクションサービスサブシステムを表示します。
  2. 「Transaction Service (トランザクションサービス)」リンクをクリックします。
  3. 管理インタフェースの右側のペインの「Advanced (詳細)」フィールドグループで、「Transaction Log Location (トランザクションログの位置)」フィールドに編集するディレクトリパスとファイル名を入力します。

エラーログ指令の設定

Sun ONE Application Server の init.conf ファイルには、エラーログ指令が含まれています。次の指令があります。

init.conf の全指令の詳細は、『Sun ONE Application Server 管理者用設定ファイルリファレンス』を参照してください。


アクセスログファイルの表示

管理サーバーと Sun ONE Application Server インスタンスのどちらの HTTP ログファイルも表示できます。

管理サーバーの HTTP ログを表示するには、管理インタフェースの左側のペインで「Admin Server (管理サーバー)」を選択し、右側のページで「Logging (ログ)」タブを選択します。「View HTTP Access Log (HTTP アクセスログを表示)」リンクが表示されます。このリンクを選択すると、設定済みのアクセスログが表示されます。表示されるログの例は、「管理サーバーの HTTP アクセスログ表示」の図に示されています。

図 5-4 管理サーバーの HTTP アクセスログ表示

この図は、管理サーバーの HTTP ログ表示を示しています。

アプリケーションサーバーインスタンスのアクセスログを表示するには、管理インタフェースの左側のペインで表示するサーバーインスタンスをクリックします。右側のペインで「Logging (ログ)」タブをクリックします。表示したいログのリンクをクリックすると、該当のサーバーインスタンスのアクティブな設定済みアクセスログが表示されます。「アプリケーションサーバーインスタンスのアクセスログ表示」の図に例を示します。

図 5-5 アプリケーションサーバーインスタンスのアクセスログ表示

この図は、アプリケーションサーバーインスタンスのアクセスログ表示を示しています。


イベントログファイルの表示

管理サーバーと Sun ONE Application Server インスタンスのどちらのアクティブなイベントログファイルも表示できます。

管理サーバーのイベントログを表示するには、左側のペインで「Admin Server (管理サーバー)」を選択し、右側のページで「Logging (ログ)」タブを選択します。「View Event Log (イベントログを表示)」リンクが表示されます。このリンクを選択すると、設定済みのイベントログが表示されます。表示されるログの例は、「管理サーバーのイベントログ表示」の図に示されています。

図 5-6 管理サーバーのイベントログ表示

この図は、管理サーバーのイベントログ表示を示しています。

アプリケーションサーバーインスタンスのイベントログを表示するには、管理インタフェースの左側のペインでサーバーインスタンスを選択し、右側のペインで「Logging (ログ)」タブを選択します。「View Event Log (イベントログを表示)」リンクが表示されます。このリンクを選択すると、設定済みのイベントログが表示されます。表示されるログの例は、「アプリケーションサーバーインスタンスのイベントログ表示」の図に示されています。

図 5-7 アプリケーションサーバーインスタンスのイベントログ表示

この図は、アプリケーションサーバーインスタンスのイベントログ表示を示しています。


ログのプリファレンスの設定

インストール時に、サーバーに対して access という名前のアクセスログファイルが作成されます。アクセスをログに記録するかどうか、どのような形式でログを行うか、およびクライアントがリソースにアクセスした場合にサーバーでそのクライアントのドメイン名を検索する必要があるかどうかを指定することによって、リソースに対するアクセスログをカスタマイズできます。

複数の仮想サーバーに対して 1 つのログファイルを使用するには、server.xml ファイルの LogVsId をイベントログに関して有効に設定する必要があります。詳細は、『Sun ONE Application Server 管理者用設定ファイルリファレンス』を参照してください。LogVsID の設定は、管理インタフェースの「Admin Server (管理サーバー)」の「Logging (ログ)」タブでも行うことができます。

管理インタフェースで「Log virtual server ID (仮想サーバー ID をログ)」を有効にするには、次の手順に従います。変更内容は管理サーバーの再起動後に反映されます。

  1. 管理インタフェースの左側のペインで「Admin Server (管理サーバー)」をクリックします。
  2. 右側のページで「Logging (ログ)」タブをクリックします。
  3. 「Log virtual server ID (仮想サーバー ID をログ)」のチェックボックスをクリックします。
  4. 「Save (保存)」ボタンをクリックして、変更を Sun ONE Application Server に適用します。

この設定に対する変更を有効にするには、Sun ONE Application Server を再起動する必要があります。


ログアナライザの実行

flexanlg は、ログファイルの報告に使用するログアナライザツールです。ログアナライザは、syslog 以外のファイルにログを記録する場合にのみ使用できます。

ログアナライザを使用すると、アクティビティの要約情報、もっとも頻繁にアクセスされる URL、サーバーがもっとも頻繁にアクセスされる時間など、デフォルトサーバーの統計情報を生成できます。ログアナライザでは、デフォルトサーバー以外の仮想サーバーの統計情報を生成できません。ただし、「アクセスログファイルの表示」で説明されているように、各仮想サーバーの統計情報を参照することは可能です。


ログアナライザを実行する前に、サーバーログのローテーションを行う必要があります。詳細は、「ログファイルの管理」を参照してください。


コマンド行からログアナライザコマンドを実行するには、flexanlg ツールを実行します。このツールは install_dir/bin/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 ]

出力順、デフォルトでは、カウント数 (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

例: flexanlg コマンドの使用

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


ログアナライザを実行する前に、サーバーログのアーカイブを行う必要があります。




前へ      目次      索引      次へ     


Copyright 2003 Sun Microsystems, Inc. All rights reserved.