Curry
PHP Framework

core

db

html

utility

Logger

クラス概要

ログ出力の機能を提供します。このクラスにより、ログの出力が容易に行えます。ログの出力先ディレクトリはCurry標準のディレクトリ構成に従います。
Loggerクラスのメソッドは全て静的メソッドです。そのため、スクリプト中のどこの位置からでも手軽に出力が可能です。またログ出力のメソッドは全て、メッセージの末尾に改行コードを自動的に付加しますので、改行コードを敢えてつける必要はありません。

クラスファイル位置

curry/utility/logger.php

フィールド

公開されるフィールドはありません。

メソッド

メソッド名 アクセス 概要
info public 情報レベルのログとしてログ出力を行います。
setLogNameメソッドでファイル名に対して設定したログキーを指定することで、ログキーに関連付けられたファイルへ出力を仕分ける事ができます。
warn public 警告レベルのログとしてログ出力を行います。
setLogNameメソッドでファイル名に対して設定したログキーを指定することで、ログキーに関連付けられたファイルへ出力を仕分ける事ができます。
error public エラーレベルのログとしてログ出力を行います。
setLogNameメソッドでファイル名に対して設定したログキーを指定することで、ログキーに関連付けられたファイルへ出力を仕分ける事ができます。
except public 例外の情報をログ出力します。
setLogNameメソッドでファイル名に対して設定したログキーを指定することで、ログキーに関連付けられたファイルへ出力を仕分ける事ができます。
debug public デバッグ目的でログに文字列を出力したい場合にこのメソッドを利用します。
setLogNameメソッドでファイル名に対して設定したログキーを指定することで、ログキーに関連付けられたファイルへ出力を仕分ける事ができます。
write public ログ出力を直接的に行うメソッドです。この他の各出力メソッドは最終的にこのメソッドを呼びだしています。そのため、通常はこのメソッドを直接利用することはありません。

setLogNameメソッドでファイル名に対して設定したログキーを指定することで、ログキーに関連付けられたファイルへ出力を仕分ける事ができます。
setLogName public ログ出力先のファイル名を指定します。
指定するのはディレクトリパスを含まないファイル名です。出力先ディレクトリはCurryの標準のログ出力先ディレクトリになります。

第二引数でログキーを設定可能です。ログキーとはファイル名に対する別名です。infoやerror等のログ出力実行メソッドの第2引数でこのキーを指定することで、キーに関連付けられたファイルへ出力される仕組みです。システム中で用途別に出力先のログファイルを複数用意する場合はこのログキーの指定が必要になります。
システムを通して1種類のログファイルにしか出力しない場合はログキーの指定は必要ありません。
getLogName public 設定されているログ出力先のファイル名を取得します。
setLogFormat public ログ出力フォーマットを指定します。
デフォルトでは以下のようなフォーマットになっています。

[時間] [ログレベル] メッセージ

このフォーマットは以下のような指定になり、デフォルトで設定されています。

[%time%] [%level%] %message%

フォーマット指定は"time"と"level"と"message"という3つのキーを適切な文字列に置き換えて出力します。
%time%は出力の瞬間の時間に置き換えられます。
%level%はログレベルのキー、例えばinfoメソッドによる出力の場合は"INFO "に置き換えられます。
%message%は文字通りユーザーが指定したメッセージに置き換えられます。

つまりこれらのキーを含めることでログ出力のフォーマットを自由に変更できます。
setTimeFormat public 出力ログに含まれる時間のフォーマットを指定することができます。
デフォルトでは"Y-m-d H:i:s"に設定されており、"2010-01-01 23:59:59"のような形式で出力されます。
指定方法はPHPの標準の時間指定フォーマットに従います。
setDir public ログ出力ディレクトリを指定します。
Curryの標準のディレクトリ構成に従う場合は指定の必要はありませんが、特に指定したい場合はこのメソッドにより設定が可能です。
このメソッドはPathManager::setLogDirectoryを間接的に呼び出しますので、直接これを実行するのと全く同じ結果となります。
setGeneration public ログの自動ローテーションの世代数を設定します。
ログファイルはsetMaxLineメソッドで設定した行数を超えると自動的に数値拡張子をファイル名の末尾に付加した名前にリネームします。その世代が増えるたびに一つずつ拡張子の数値を+していきますが、その最大世代数を設定します。

例えばログファイル名を"log"とし、世代数を3に設定したすると、最大で"log"、"log.1"、"log.2"の3ファイルが残る事になります。この状態で"log"が最大行数に達すると、"log.2"が削除され、"log.1"が"log.2"にリネームされ、"log"が"log.1"にリネームされ、"log"が新規作成されることになります。

世代数の初期値は2に設定されていますので、このメソッドにより世代数の設定を行わない場合は2個までしか世代保存されません。
setMaxLine public 1つのログファイルに出力される最大行数を設定します。
ここで設定した行数を超えた状態のログファイルにログを出力しようとすると、自動ローテーション機能が働きます。自動ローテーションについてはsetGenerationメソッドの説明を参照してください。

尚、このメソッドにより設定された行数を絶対に超えない訳ではありません。
ログ出力処理1回ごとに行数判定を行うので、例えば最大1000行に設定している状態で999行存在するログファイルに対して、改行コードを複数含む文字列をログ出力メソッドにより出力した場合、1000を超えてしまいます。

最大出力行数の初期値は100000に設定されているため、このメソッドを実行しない場合は100000行まで出力されます。