名前
ahsrlog - ログファイルのローテーション
形式
ahsrlog -T logfile time[,...] count [-l maxsize] [-m mode] [-r]
ahsrlog -C logfile date[,...] count [-t time] [-l maxsize] [-m mode] [-r]
ahsrlog -W logfile week[,...] count [-t time] [-l maxsize] [-m mode] [-r]
ahsrlog -d logfile days count [-m mode]
ahsrlog -s logfile size count [-m mode]
機能説明
本コマンドは、アクセスログ、エラーログ、またはトレースログを出力し、ログファイルのローテーションを設定します。
環境定義ファイル(httpd.conf)のErrorLogディレクティブ、CustomLogディレクティブ、TraceLogディレクティブ、およびTransferLogディレクティブのパラメタ指定時に使用します。
本コマンドのオプションとパラメタを以下に示します。
時刻単位およびファイルサイズ単位に、以下のタイミングでローテーションを行います。
「timeに指定した時刻」
ログ出力によるログファイル更新時に「-lオプションに指定したファイルサイズ」を超過する場合
-rオプションを指定した場合で、Webサーバ起動時に、logfileに指定したログファイル(ファイル名プレフィクス)がすでに存在し、かつファイルサイズが1バイト以上ある場合
ログが出力されなかった場合は、timeに指定した時刻に0バイトのログファイルを作成します。
日付単位およびファイルサイズ単位に、以下のタイミングでローテーションを行います。
「dateに指定した日付」の「-tオプションに指定した時刻」
ログ出力によるログファイル更新時に「-lオプションに指定したファイルサイズ」を超過する場合
-rオプションを指定した場合で、Webサーバ起動時に、logfileに指定したログファイル(ファイル名プレフィクス)がすでに存在し、かつファイルサイズが1バイト以上ある場合
ログが出力されなかった場合は、-tオプションに指定した時刻に0バイトのログファイルを作成します。
曜日単位およびファイルサイズ単位に、以下のタイミングでローテーションを行います。
「weekに指定した曜日」の「-tオプションに指定した時刻」
ログ出力によるログファイル更新時に「-lオプションに指定したファイルサイズ」を超過する場合
-rオプションを指定した場合で、Webサーバ起動時に、logfileに指定したログファイル(ファイル名プレフィクス)がすでに存在し、かつファイルサイズが1バイト以上ある場合
ログが出力されなかった場合は、-tオプションに指定した時刻に0バイトのログファイルを作成します。
日数単位に、以下のタイミングでローテーションを行います。
「Webサーバの起動日の0:00からdaysに指定した日数×24時間」経過後の次のログ出力時
また、以下の条件の場合にもログファイルのローテーションを行いますが、以下の条件でローテーションを行った場合でも、上記のタイミングに変更はありません。
ログ出力によるログファイル更新時に、以下のファイルサイズの上限値を超過する場合
2Gバイト
ulimitコマンド(ボーンシェル系)またはlimitコマンド(Cシェル系)で設定されたファイルサイズが2Gバイト以上の場合は、2Gバイト。小さい場合は、ulimitコマンドまたはlimitコマンドで設定されたファイルサイズ。
Webサーバ起動後の最初のログ出力時に、logfileに指定したログファイル(ファイル名プレフィクス)がすでに存在し、そのログファイルの更新日がWebサーバの起動日と異なる場合
ファイルサイズ単位に、以下のタイミングでローテーションを行います。
ログ出力によるログファイル更新時に「sizeで指定したファイルサイズ」を超過する場合
ログファイルを格納するディレクトリ、およびファイル名プレフィクスを、192バイト以内の半角英数字の文字列で指定します。
ディレクトリは、実際に存在するディレクトリ名を、絶対パスで指定します。
出力されるログファイルの形式は、以下のようになります。
最新ファイル:ファイル名プレフィクス
ローテーションされたファイル:ファイル名プレフィクス.N
N:通番(Nは0から始まる連続の番号です。新しいファイルの順に、1番目のファイルの通番は「.0」、N番目のファイルの通番は「.(N-1)」となります。)
時刻単位のローテーションにおいて、ログファイルのローテーションを行う時刻を、以下の形式で指定します。半角カンマ(,)で区切ることにより複数の時刻を最大24個まで指定できます。
形式:「hhmm」(0000~2359の数値)
hh:時(00~23)
mm:分(00~59)
日付単位のローテーションにおいて、ログファイルのローテーションを行う日付を、1から31までの数値で指定します。半角カンマ(,)で区切ることにより複数の日付を最大31個まで指定できます。
曜日単位のローテーションにおいて、ログファイルのローテーションを行う曜日を、以下の半角英字の文字列で指定します。半角カンマ(,)で区切ることにより複数の曜日を最大7個まで指定できます。なお、文字列の大文字と小文字は、区別されません。
日曜日:「Sun」
月曜日:「Mon」
火曜日:「Tue」
水曜日:「Wed」
木曜日:「Thu」
金曜日:「Fri」
土曜日:「Sat」
日数単位のローテーションにおいて、ローテーションを行う間隔を日数で指定します。日数は、1から365までの数値で指定します。
ファイルサイズ単位のローテーションにおいて、1ファイル当たりの最大ログファイルサイズを、1から以下までの数値(単位:Mバイト)で指定します。
2047
ulimitコマンド(ボーンシェル系)またはlimitコマンド(Cシェル系)で設定されたファイルサイズが2047Mバイト以上の場合は、2047。小さい場合は、ulimitコマンドまたはlimitコマンドで設定されたファイルサイズ。
ログファイルのファイル数の上限値を、0から999までの数値で指定します。
ファイル数が上限値に達した場合は、指定したオプションのローテーション単位により最も古いログファイルを削除して新しいログファイルを作成します。
「0」または「1」を指定した場合は、logfileに指定した1つのログファイル(ファイル名プレフィクス)でローテーションを行います。
ログファイルのローテーションを行う時刻を設定します。timeには、以下の形式で時刻を指定します。
形式:「hhmm」(0000~2359の数値)
hh:時(00~23)
mm:分(00~59)
本オプションを省略した場合、ローテーションを行う時刻は、「0000」(00時00分)となります。
時刻単位/日付単位/曜日単位でのローテーションに加え、さらにファイルサイズ単位でもローテーションを行います。maxsizeには、1ファイル当たりの最大ログファイルサイズを、1から以下までの数値(単位:Mバイト)で指定します。ローテーションは、ログ出力によるログファイル更新時に、ファイルサイズが本設定値を超過している場合に行います。
2047
ulimitコマンド(ボーンシェル系)またはlimitコマンド(Cシェル系)で設定されたファイルサイズが2047Mバイト以上の場合は、2047。小さい場合は、ulimitコマンドまたはlimitコマンドで設定されたファイルサイズ。
本オプションを省略した場合、最大ログファイルサイズは、以下の数値となります。
2Gバイト
ulimitコマンド(ボーンシェル系)またはlimitコマンド(Cシェル系)で設定されたファイルサイズが2Gバイト以上の場合は、2Gバイト。小さい場合は、ulimitコマンドまたはlimitコマンドで設定されたファイルサイズ。
ログファイルのアクセス権限を設定します。modeには、以下の値を指定します。
本オプションを省略した場合は、ログファイルのアクセス権限は、「644」となります。「644」と設定した場合、管理者には読込み権限および書込み権限があり、グループ・一般ユーザには書込み権限はなく、読込み権限だけとなります。
設定値 | 管理者 | グループ | 一般ユーザ | |||
---|---|---|---|---|---|---|
読込み権限 | 書込み権限 | 読込み権限 | 書込み権限 | 読込み権限 | 書込み権限 | |
600 | ○ | ○ | × | × | × | × |
640 | ○ | ○ | ○ | × | × | × |
644(省略時) | ○ | ○ | ○ | × | ○ | × |
660 | ○ | ○ | ○ | ○ | × | × |
664 | ○ | ○ | ○ | ○ | ○ | × |
666 | ○ | ○ | ○ | ○ | ○ | ○ |
○:アクセス権限があります。
×:アクセス権限がありません。
Webサーバ起動時に、logfileに指定したログファイル(ファイル名プレフィクス)がすでに存在し、かつファイルサイズが1バイト以上ある場合は、Webサーバ起動時のタイミングでログファイルのローテーションを行います。
本オプションを省略した場合は、Webサーバ起動時にログファイルのローテーションを行いません。
注意事項
本コマンドのオプションおよびパラメタは、「形式」に示した順序で指定してください。
定期的にWebサーバまたはオペレーティングシステムを再起動して運用している場合は、ログファイルのローテーションが行われない可能性があります。
以下の条件に該当する場合は、-rオプションを指定して、Webサーバを起動してください。
-Tオプションを指定した場合で、かつtimeに指定した時刻にWebサーバまたはオペレーティングシステムが停止していた場合。
-Cオプションを指定した場合で、かつdateに指定した日付の-tオプションに指定した時刻に、Webサーバまたはオペレーティングシステムが停止していた場合。
-Wオプションを指定した場合で、かつweekに指定した曜日の-tオプションに指定した時刻に、Webサーバまたはオペレーティングシステムが停止していた場合。
logfileに指定したログファイル(ファイル名プレフィクス)は、複写/移動/削除/編集を行わないでください。
メインホストおよびバーチャルホスト、または異なるディレクティブで、同じログファイル(ファイル名プレフィックス)を指定しないでください。
複数Webサーバを運用している場合、他のWebサーバと同じログファイル(ファイル名プレフィックス)を指定しないでください。
-Cオプションに、例えば「31」を指定して毎月31日にローテーションを行うように設定しても、31日が存在しない月は、ローテーションが行われません。月末にローテーションを行いたい場合は、1日00時00分にローテーションを行うなどの設定を検討してください。
ローテーションを行った古いログファイルの更新日時は、ローテーションを行う前の最後のログが出力された日時となります。
ulimitコマンド(ボーンシェル系)およびlimitコマンド(Cシェル系)の詳細については、各OSのドキュメントを参照してください。
使用例
使用例については、以下を参照してください。