function logMessage($level, $msg) {
$level = strtolower($level);
// 支持的错误类型
$type = array('error','debug','info','fatal');
if (!in_array($level,$type)) {
return false;
}
//文件夹目录
$folder = str_replace('\\', '/', FCPATH.'logs/'.date('Y',time()).'/'.date('m',time()).'/'.date('d',time()).'/'.$level.'/');
if(!file_exists($folder)) {
Directory($folder);
}
$instance =& get_instance();
$info = array(
'SERVER_PROTOCOL' => isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : '',
'APP_VERSION' => isset($instance->request['version']) ? $instance->request['version'] : '',
'APP_EQUIPMENT' => isset($instance->request['equipment']) ? $instance->request['equipment'] : '',
'SERVER_NAME' => isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : '',
'REQUEST_METHOD' => isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : '',
'REQUEST_URI' => isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '',
);
$info = implode(' --> ', $info);
$file = date('H').'-log.txt';
$content = date('H:i:s ') . $info.' --> ' .$level .' :'. $msg . "\n";
$path = $folder.$file;
if(!file_put_contents($path, $content,FILE_APPEND)){
logMessage('fatal',date('y-m-d').' 写入日志失败');
}
}
/**
* 递归创建文件
* @param $dir
* @return bool
*/
function Directory($dir){
if(is_dir($dir) || @mkdir($dir,0777,true)){ //查看目录是否已经存在或尝试创建,加一个@抑制符号是因为第一次创建失败,会报一个“父目录不存在”的警告。
return true;
}else{
$dirArr = explode('/',$dir); //当子目录没创建成功时,试图创建父目录,用explode()函数以'/'分隔符切割成一个数组
array_pop($dirArr); //将数组中的最后一项(即子目录)弹出来,
$newDir = implode('/',$dirArr); //重新组合成一个文件夹字符串
Directory($newDir); //试图创建父目录
if(@mkdir($dir , 0777,true)){
//创建文件
//@fopen($fileName , 'wb');
return true;
} //再次试图创建子目录,成功输出目录名
}
}