作成日:2018-02-22, 更新日:2018-04-26
基本
「APPPATH . 'logs/'」の下に保存させる場合。
▼適当な場所に記載
public static function saveLog($body='', $prms=array()) { $filename = (isset($prms['filename']))? $prms['filename']: 'log'; $path = APPPATH . 'logs/' . $filename . date('Ymd') . '.txt'; $str = date('Y-m-d H:i:s') . "\n" . $body . "\n"; file_put_contents($path, $str, FILE_APPEND | LOCK_EX); }
▼適当なトコから呼び出し
$body = 〇〇〇; $prms = array( 'filename' => 〇〇〇, ); \〇〇〇::saveLog($body, $prms);
サンプル
・呼び出し元もログに出力したい(※「debug_backtrace()」を利用)
・年月のディレクトリ内にファイルを作成したい(※「is_dir()」と「mkdir()」を利用)
▼「app/classes/util/log.php」
<?php class Util_Common_Log { /** ディレクトリが無ければ作る **/ public static function makeDir($dir){ $parts = explode('/', $dir); $dir = ''; foreach($parts as $part) { if(!is_dir($dir .= "/$part")) { mkdir($dir); } } } /** 呼び出し元情報 **/ public static function getLastFunction($aryBackTrace=false) { $strBackTrace = ''; if ( is_array($aryBackTrace) ) { $strBackTrace .= ( (!isset($aryBackTrace[0]['file']))? 'file - unknown, ': $aryBackTrace[0]['file'] ) . ( (!isset($aryBackTrace[0]['line']))? 'line - unknown, ': '(' . $aryBackTrace[0]['line'] . ')' ) . ''; } return $strBackTrace; } /** ログ保存 **/ public static function save($body='', $prms=array()) { // アクセス元IP $remoteAddr = ''; if ( isset($_SERVER["REMOTE_ADDR"]) ) { $remoteAddr .= $_SERVER["REMOTE_ADDR"]; } else { $remoteAddr .= 'unknown'; } // 呼び出し元(バックトレース) $strBackTrace = self::getLastFunction(debug_backtrace()); $dir = APPPATH . 'logs/' . date('Y') . '/' . date('m'); self::makeDir($dir); $filename = (isset($prms['filename']))? $prms['filename']: 'log_'; $path = $dir . '/' . $filename . date('d') . '.txt'; $str = "\n" . '==== ==== ====' . "\n" . date('Y-m-d H:i:s') . ' / ' . 'REMOTE_ADDR:' . $remoteAddr . "\n" . 'BACK_TRACE = ' . $strBackTrace . "\n" . 'BODY = ' . $body . "\n" . ''; file_put_contents($path, $str, FILE_APPEND | LOCK_EX); } }