生成txt格式的日志文件
/**
* 日志记录,按照"Y-m-d.log"生成当天日志文件
* 日志路径为:入口文件所在目录/logs/$type/当天日期.log.php,例如 /logs/error/2012-01-05.log.php
* @param string $content 日志内容
* @param string $type 对应logs目录下的子文件夹名
* @return bool true/false 返回写入的字符数,出现错误时则返回 FALSE 。
*/
function writelog($content = "", $type = "")
{
date_default_timezone_set('PRC');
//判断日志根目录是否存在,不存在则创建
$log_root = getcwd() . DIRECTORY_SEPARATOR . 'logs';
// $log_root = ROOT_PATH . 'logs';
if (!is_dir($log_root)) {
mkdir($log_root, 0777);
}
//如传入第二个参数,则生成子文件夹;否则在根目录创建日志
if ($type) {
$dir = $log_root . DIRECTORY_SEPARATOR . $type;
if (!is_dir($dir)) {
if (!mkdir($dir, 0777, true)) {
return false;
}
}
} else {
$dir = $log_root;
}
$filename = $dir . DIRECTORY_SEPARATOR . date("Y-m-d") . '.log.txt';
if (is_array($content)) {
$content = print_r($content, true);
}
$ss = '';
for ($i = 1; $i <= 115; $i++) {
$ss .= '-';
}
$exec_url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER["REQUEST_URI"];
//组装数据
$str = "\r\n" . 'time:' . date("Y-m-d H:i:s")
. "\r\n" . 'exec_url:' . $exec_url;
$str .= "\r\n" . 'content:' . $content
. "\r\n"
. $ss;
if (!$fp = @fopen($filename, "ab")) {
return false;
}
flock($fp, LOCK_EX);
$res = fwrite($fp, $str);
flock($fp, LOCK_UN);
fclose($fp);
return $res;
}
生成php格式的日志文件
/**
* 日志记录,按照"Y-m-d.log"生成当天日志文件
* 日志路径为:入口文件所在目录/logs/$type/当天日期.log.php,例如 /logs/error/2012-01-05.log.php
* @param string $content 日志内容
* @param string $type 对应logs目录下的子文件夹名
* @return bool true/false 返回写入的字符数,出现错误时则返回 FALSE 。
*/
function write_log($content = "", $type = "")
{
date_default_timezone_set('PRC');
//判断日志根目录是否存在,不存在则创建
$log_root = getcwd() . DIRECTORY_SEPARATOR . 'logs';
// $log_root = ROOT_PATH . 'logs';
if (!is_dir($log_root)) {
mkdir($log_root, 0777);
}
//如传入第二个参数,则生成子文件夹;否则在根目录创建日志
if ($type) {
$dir = $log_root . DIRECTORY_SEPARATOR . $type;
if (!is_dir($dir)) {
if (!mkdir($dir, 0777, true)) {
return false;
}
}
} else {
$dir = $log_root;
}
//判断日志文件是否存在,以及内容是否为数组,不是数组则删除文件;
$filename = $dir . DIRECTORY_SEPARATOR . date("Y-m-d") . '.log.php';
@$logs = include $filename;
if ($logs && !is_array($logs)) {
unlink($filename);
$logs = array();
}
//将时间和内容写入日志
$exec_url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER["REQUEST_URI"];
//组装数据
$this_log = array(
"time" => date("Y-m-d H:i:s"),
'exec_url' => $exec_url,
);
$this_log['content'] = $content;
$logs[] = $this_log;
$str = "<?php \r\n return " . array_eval($logs) . ";";
if (!$fp = @fopen($filename, "wb")) {
return false;
}
flock($fp, LOCK_EX);
$res = fwrite($fp, $str);
flock($fp, LOCK_UN);
fclose($fp);
return $res;
}
/**
* @desc 数组转换成字串
* @param $array
* @param bool $format
* @param int $level
* @return string
*/
function array_eval($array, $format = false, $level = 0)
{
$space = $line = '';
if (!$format) {
for ($i = 0; $i <= $level; $i++) {
$space .= "\t";
}
$line = "\n";
}
$evaluate = 'array' . $line . $space . '(' . $line;
$comma = $space;
foreach ($array as $key => $val) {
$key = is_string($key) ? '\'' . addcslashes($key, '\'\\') . '\'' : $key;
$val = !is_array($val) && (!preg_match('/^\-?\d+$/', $val) || strlen($val) > 12) ? '\'' . addcslashes($val, '\'\\') . '\'' : $val;
if (is_array($val)) {
$evaluate .= $comma . $key . ' => ' . array_eval($val, $format, $level + 1);
} else {
$evaluate .= $comma . $key . ' => ' . $val;
}
$comma = ',' . $line . $space;
}
$evaluate .= $line . $space . ')';
return $evaluate;
}
/**
* 日志记录,按照"Y-m-d.log"生成当天日志文件
* 日志路径为:入口文件所在目录/logs/$type/当天日期.log.php,例如 /logs/error/2012-01-05.log.php
* @param string $content 日志内容
* @param string $type 对应logs目录下的子文件夹名
* @return bool true/false 返回写入的字符数,出现错误时则返回 FALSE 。
*/
function writelog($content = "", $type = "")
{
date_default_timezone_set('PRC');
//判断日志根目录是否存在,不存在则创建
$log_root = getcwd() . DIRECTORY_SEPARATOR . 'logs';
// $log_root = ROOT_PATH . 'logs';
if (!is_dir($log_root)) {
mkdir($log_root, 0777);
}
//如传入第二个参数,则生成子文件夹;否则在根目录创建日志
if ($type) {
$dir = $log_root . DIRECTORY_SEPARATOR . $type;
if (!is_dir($dir)) {
if (!mkdir($dir, 0777, true)) {
return false;
}
}
} else {
$dir = $log_root;
}
$filename = $dir . DIRECTORY_SEPARATOR . date("Y-m-d") . '.log.txt';
if (is_array($content)) {
$content = print_r($content, true);
}
$ss = '';
for ($i = 1; $i <= 115; $i++) {
$ss .= '-';
}
$exec_url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER["REQUEST_URI"];
//组装数据
$str = "\r\n" . 'time:' . date("Y-m-d H:i:s")
. "\r\n" . 'exec_url:' . $exec_url;
$str .= "\r\n" . 'content:' . $content
. "\r\n"
. $ss;
if (!$fp = @fopen($filename, "ab")) {
return false;
}
flock($fp, LOCK_EX);
$res = fwrite($fp, $str);
flock($fp, LOCK_UN);
fclose($fp);
return $res;
}
生成php格式的日志文件
/**
* 日志记录,按照"Y-m-d.log"生成当天日志文件
* 日志路径为:入口文件所在目录/logs/$type/当天日期.log.php,例如 /logs/error/2012-01-05.log.php
* @param string $content 日志内容
* @param string $type 对应logs目录下的子文件夹名
* @return bool true/false 返回写入的字符数,出现错误时则返回 FALSE 。
*/
function write_log($content = "", $type = "")
{
date_default_timezone_set('PRC');
//判断日志根目录是否存在,不存在则创建
$log_root = getcwd() . DIRECTORY_SEPARATOR . 'logs';
// $log_root = ROOT_PATH . 'logs';
if (!is_dir($log_root)) {
mkdir($log_root, 0777);
}
//如传入第二个参数,则生成子文件夹;否则在根目录创建日志
if ($type) {
$dir = $log_root . DIRECTORY_SEPARATOR . $type;
if (!is_dir($dir)) {
if (!mkdir($dir, 0777, true)) {
return false;
}
}
} else {
$dir = $log_root;
}
//判断日志文件是否存在,以及内容是否为数组,不是数组则删除文件;
$filename = $dir . DIRECTORY_SEPARATOR . date("Y-m-d") . '.log.php';
@$logs = include $filename;
if ($logs && !is_array($logs)) {
unlink($filename);
$logs = array();
}
//将时间和内容写入日志
$exec_url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER["REQUEST_URI"];
//组装数据
$this_log = array(
"time" => date("Y-m-d H:i:s"),
'exec_url' => $exec_url,
);
$this_log['content'] = $content;
$logs[] = $this_log;
$str = "<?php \r\n return " . array_eval($logs) . ";";
if (!$fp = @fopen($filename, "wb")) {
return false;
}
flock($fp, LOCK_EX);
$res = fwrite($fp, $str);
flock($fp, LOCK_UN);
fclose($fp);
return $res;
}
/**
* @desc 数组转换成字串
* @param $array
* @param bool $format
* @param int $level
* @return string
*/
function array_eval($array, $format = false, $level = 0)
{
$space = $line = '';
if (!$format) {
for ($i = 0; $i <= $level; $i++) {
$space .= "\t";
}
$line = "\n";
}
$evaluate = 'array' . $line . $space . '(' . $line;
$comma = $space;
foreach ($array as $key => $val) {
$key = is_string($key) ? '\'' . addcslashes($key, '\'\\') . '\'' : $key;
$val = !is_array($val) && (!preg_match('/^\-?\d+$/', $val) || strlen($val) > 12) ? '\'' . addcslashes($val, '\'\\') . '\'' : $val;
if (is_array($val)) {
$evaluate .= $comma . $key . ' => ' . array_eval($val, $format, $level + 1);
} else {
$evaluate .= $comma . $key . ' => ' . $val;
}
$comma = ',' . $line . $space;
}
$evaluate .= $line . $space . ')';
return $evaluate;
}