当前位置 : 主页 > 网络编程 > PHP >

一个简单的日志函数

来源:互联网 收集:自由互联 发布时间:2021-06-28
生成txt格式的日志文件 /** * 日志记录,按照"Y-m-d.log"生成当天日志文件 * 日志路径为:入口文件所在目录/logs/$type/当天日期.log.php,例如 /logs/error/2012-01-05.log.php * @param string $content 日志
生成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 = "
  $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;
}
网友评论