/** * 写日志到文件中。每次写入并入一行,并添加时间戳。 * @param string $name 日志名。 * @param string $_ 可变参数。要记录的数据。 * @return void */ function write_log($name) { if (func_num_args() < 2) { return; } $web = SAPI === SAPI_WEB; if ($web) { $browser = web::browser(); $ip = $browser->ip; $ua = $browser->useragent; $m = $browser->method; $url = $browser->request; } $ds = DIRECTORY_SEPARATOR; $dir = BASE . DS . 'logs' . DS . date("Y{$ds}m"); if (!is_dir($dir)) { @mkdir($dir, 0777, true); if (!is_dir($dir)) { error_log("Cannot create directory \"{$dir}\"."); return; } } $file = $dir . DS . $name . '-' . date('d') . '.log'; $h = fopen($file, 'a'); if ($h) { $time = date('Y-m-d H:i:s'); $time = "[{$time}] " . ($web ? "[{$ip}] {$m} {$url}\n" : ''); if (flock($h, LOCK_EX)) { fwrite($h, $time); for ($i = 1; $i < func_num_args(); $i++) { $var = func_get_arg($i); if (!is_scalar($var)) { $var = PHP_EOL . print_r($var, true) . PHP_EOL; } else { if (is_resource($var)) { $var = '[RESOURCE]'; } } fwrite($h, ($i > 0 ? "\t" : '') . $var . ''); } fwrite($h, PHP_EOL); flock($h, LOCK_UN); } fclose($h); } else { error_log("Cannot write file \"{$file}\"."); } }