tp5处理独立日志

发表时间:2022-07-21 16:57:48
最近用fastadmin比较多,这个项目使用的是tp5.0,习惯了tp6的日志的channel的独立日志功能,tp5的日志就很不方便,这里写了一个独立的日志类,方便对一些特殊的日志进行记录

保存文件名为MyLog.php到application\common\library文件夹中

使用的时候直接  MyLog::info('内容')    MyLog::alert('内容') MyLog::error('内容')  即可

另外也可以自己定义日志类型,例如    MyLog::haha('内容')

<?php

namespace app\common\library;


use think\Request;

class MyLog
{
    /**
     * 存储位置
     * @var string
     */
    private static $dir= 'star';

    /**
     * @var array 日志类型
     */
    protected static $type = ['error', 'info', 'alert'];

    /**
     * Notes:info
     * DateTime 2022/7/21 16:41
     * @Author wind
     * @param $msg
     * @param $channel
     */
    public static function info($msg, $channel = '')
    {
        self::write($msg, 'info', $channel);
    }

    /**
     * Notes:alert
     * DateTime 2022/7/21 16:41
     * @Author wind
     * @param $msg
     * @param $channel
     */
    public static function alert($msg, $channel = '')
    {
        self::write($msg, 'alert', $channel);
    }

    /**
     * Notes:error
     * DateTime 2022/7/21 16:41
     * @Author wind
     * @param $msg
     * @param $channel
     */
    public static function error($msg, $channel = '')
    {
        self::write($msg, 'error', $channel);
    }

    /**
     * Notes:写入日志
     * DateTime 2022/7/21 16:42
     * @Author wind
     * @param $msg
     * @param $level
     * @param $channel
     */
    protected static function write($msg, $level = 'info', $channel = '')
    {
        $log_filename = self::getLogFileName($channel);
        self::checkFileSize($log_filename);
        if(is_array($msg)){
            $msg = var_export($msg, true);
        }
        $request = Request::instance();
        $header = "[ ${level} ] " . date('Y-m-d H:i:s') . ' ' . $request->ip() . ' ' . $request->method() . ' ' . $request->url(true) . "\r\n";
        file_put_contents($log_filename,  $header . $msg . "\r\n------------------------ --------------------------\r\n", FILE_APPEND);
    }

    /**
     * Notes:获取日志文件信息
     * DateTime 2022/7/21 16:42
     * @Author wind
     * @param $channel
     * @return string
     */
    protected static function getLogFileName($channel = '')
    {
        $logDir = RUNTIME_PATH . self::$dir;
        if (!is_dir($logDir)) {
            mkdir($logDir, '0755', true);
        }
        if ($channel) {
            $logDir .= DS . $channel;
            if (!is_dir($logDir)) {
                mkdir($logDir, '0755', true);
            }
        }
        return $logDir . DS . date('Y-m-d') . '.log';
    }

    /**
     * Notes:检测日志大小
     * DateTime 2022/7/21 16:43
     * @Author wind
     * @param $log_filename
     */
    protected static function checkFileSize($log_filename)
    {
        $max_size = 30000000;

        if (file_exists($log_filename) && (abs(filesize($log_filename)) > $max_size)) {
            rename($log_filename, dirname($log_filename) . DS . date('Ym-d-His') . ".log");
        }
    }

    /**
     * 静态方法调用
     * @access public
     * @param  string $method 调用方法
     * @param  mixed  $args   参数
     * @return void
     */
    public static function __callStatic($method, $args)
    {
        if (!in_array($method, self::$type)) {
            array_push($args, $method);
            call_user_func_array('self::write', $args);
        }
    }
}



------分割线---------------------------------------

您可能感兴趣

Tags: thinkphp 5.0 日志 log

留个脚印

点击我更换图片 (请输入验证码)

最新评论