development = $development; if($root_path) { if(is_dir($root_path)) { $this->rootPath = $root_path; } else { if(@mkdir($root_path, 0775, true)) { $this->rootPath = $root_path; } } } } public function __toString() { return __CLASS__; } /** * 写入 debug 日志 * @param string $message * @param string | array $data */ public function debug($message, $data=null) { $this->save($message, $data, 'DEBUG'); } /** * 写入 INFO 日志 * @param string $message * @param string | array $data */ public function info($message, $data=null) { $this->save($message, $data, 'INFO'); } /** * 写入 ERROR 日志 * @param string $message * @param string | array $data */ public function error($message, $data=null) { $this->save($message, $data, 'ERROR'); } /** * 打印变量 * @param mixed $args 打印列表 * 最后一个元素如果是 true 则 exit */ public function print(...$args) { $args = func_get_args(); $length = count($args); $exit = false; if(is_bool($last_argument = $args[$length-1])) { if($last_argument) { $exit = true; array_pop($args); } } echo '
';
while ($argument = array_shift($args)) {
print_r($argument);
echo '
';
}
echo '';
if($exit) {
exit;
}
}
protected function save($message, $data, $level)
{
if(is_null($this->rootPath)) {
return;
}
// 生产环境时只记录错误信息
if(!$this->development) {
if($level != 'ERROR') {
return;
}
}
$date = date('Y-m-d');
$now = date('Y-m-d H:i:s');
$filename = "{$this->rootPath}/{$date}.log";
if(is_array($data)) {
$data = json_encode($data, JSON_UNESCAPED_UNICODE);
}
@file_put_contents($filename, "[{$level}] {$now} {$message} {$data}\r\n", FILE_APPEND);
}
}