作成日: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);
}
}