FuelPHPのログ設定:保存先とファイル名のカスタマイズに関する注意点

FuelPHPのデフォルト設定では、ログファイルは以下の形式で保存されます。 /fuel/app/logs/YYYY/MM/DD.php ここで、YYYYとMMのディレクトリは存在しない場合、自動的に生成されます。 ログファイルの保存場所を変更するには、fuel/app/config/config.php内のlog_pathを編集します。

//'log_path'         => APPPATH.'logs/',
'log_path'         => APPPATH.'logs/batch',     //①
// 'log_path'         => APPPATH.'logs/'.date('Y/m').DS, // ②
注意点として、log_pathで指定したパスは事前に存在している必要があります。存在しない場合はエラーが発生します。 ファイル名や拡張子を変更するには、log_fileを編集します。

'log_file'         => date('d').'.log',   // "DD.php" という形式
log_fileを設定しない場合、FuelPHPはlog_pathで指定されたパスの下にYYYYとMMのディレクトリを自動的に作成し、DD.phpというログファイルを生成します。 しかし、log_fileを設定すると、YYYY/MMのディレクトリ構造は自動生成されず、log_fileで指定した形式に従ってファイルとディレクトリが生成されます。

'log_file'         => date('d').'.log',   // この場合、DD.log形式のファイルが生成され、ディレクトリは作成されません。
// ファイル名を変更しつつ、YYYY/MMのディレクトリ構造を維持したい場合は以下のように設定します。
'log_file'         => date('Y/m').DS.date('d').'.log',  // この場合、指定されたパスに沿ってディレクトリが生成されます。
例えば、ログファイルの拡張子を.phpから.logに変更したいとします。 最初の試みは以下のようになります。

    'log_file'         => date('d').'.log',   // ファイル名を "DD.log" 形式に
   'log_path'         => APPPATH.'logs/'.date('Y/m').DS, // パスを "APPPATH/YYYY/MM/" に
この設定は、変更直後は問題なく動作しますが、月が変わるとエラーが発生します。その理由は、先述の通り、log_pathで指定したパスが存在しなくなるためです。 正しい設定方法は、log_fileに動的なパス情報を含めることです。log_pathは静的なパスに保つか、必要に応じてコメントアウトします。

    'log_file'         => date('Y/m').DS.date('d').'.log',   // "DD.log" 形式で、動的なパスを含める
   // 'log_path'         => APPPATH.'logs'.DS, // 静的なパスは不要になる場合
まとめ: - 静的なパス部分はlog_pathで設定します。 - 動的なパスやファイル名の部分はlog_fileで設定します。log_fileはファイル名だけでなく、パスの一部も指定できます。 log_pathで指定したパスは事前に存在している必要があり、存在しないとエラーになります。 log_fileで指定したパスは、log_pathの下に作成されるため、事前に存在する必要はありません。存在しない場合は自動的に作成されます。

タグ: FuelPHP ログ設定 ファイルパス PHP

7月31日 19:17 投稿