简单的PHP日志函数 不指定

jed , 2018-3-14 10:15 , 代码编程 , 评论(0) , 阅读(3653) , Via 本站原创 | |
生成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;
}
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]