php 日志类

本文详细介绍了PHP中如何创建和使用一个日志类,包括记录不同级别的日志(如错误、警告、信息),以及如何自定义日志格式和存储位置。通过实例展示了如何在代码中集成日志功能,以便于调试和后期问题排查。
摘要由CSDN通过智能技术生成
<?php
namespace  app\thirdParty;
/**
 * 日志类
 *
 * @package    log
 * @version    $Id$
 */
class Log
{
    /**
     * 单个日志文件大小限制
     *
     * @var int 字节数
     */
    private static $i_log_size = 5242880; // 1024 * 1024 * 5 = 5M

    /**
     * 设置单个日志文件大小限制
     *
     * @param int $i_size 字节数
     */
    public static function set_size($i_size)
    {
        if( is_numeric($i_size) ){
            self::$i_log_size = $i_size;
        }
    }

    /**
     * 写日志
     *
     * @param string $s_message 日志信息
     * @param string $s_type    日志类型
     */
    public static function write($s_message, $s_type = 'log')
    {
        // 检查日志目录是否可写
        if ( !file_exists(LOG_PATH) ) {
            @mkdir(LOG_PATH);
        }
        chmod(LOG_PATH,0777);
        if (!is_writable(LOG_PATH)) exit('LOG_PATH is not writeable !');
        $s_now_time = date('[Y-m-d H:i:s]');
        $s_now_day  = date('Y_m_d');
        // 根据类型设置日志目标位置
        $s_target   = LOG_PATH;
        switch($s_type)
        {
            case 'debug':
                $s_target .= 'Out_' . $s_now_day . '.log';
                break;
            case 'error':
                $s_target .= 'Err_' . $s_now_day . '.log';
                break;
            case 'log':
                $s_target .= 'Log_' . $s_now_day . '.log';
                break;
            default:
                $s_target .= 'Log_' . $s_now_day . '.log';
                break;
        }

        //检测日志文件大小, 超过配置大小则重命名
        if (file_exists($s_target) && self::$i_log_size <= filesize($s_target)) {
            $s_file_name = substr(basename($s_target), 0, strrpos(basename($s_target), '.log')). '_' . time() . '.log';
            rename($s_target, dirname($s_target) . DS . $s_file_name);
        }
        clearstatcache();
        // 写日志, 返回成功与否
        return error_log("$s_now_time $s_message\n", 3, $s_target);
    }
}

 

public function log($log)
{
    define('DS', DIRECTORY_SEPARATOR);                 // 设置目录分隔符
    define('LOG_PATH',dirname('../../log').DS.'log'.DS);
    $res = \Log::write($log,'log');
    return $res;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值