Log.php 1.84 KB
<?php

namespace common\helpers;

use Yii;
use yii\helpers\FileHelper;
use yii\log\FileTarget;
use yii\log\Logger;

/**
 * 全新封装的日志, 统一输出到runtime根目录
 * Class Log
 * @package common\helpers
 */
class Log
{
    /**
     * @param $str
     */
    static function DEBUG($str)
    {
        self::writeFile($str, '/debugLogs');
    }

    /**
     * @param $str
     */
    static function ERROR($str)
    {
        self::writeFile($str, '/logs');
    }

    /** 微信支付专用
     * @param $str
     */
    static function WxPayLog($str)
    {
        self::writeFile($str, '/wxPayLogs');
    }

    /** 模板消息发送的logs
     * @param $str
     */
    static function templateLog($str)
    {
        self::writeFile($str, '/dlogs');
    }

    /** 用来做记录的,如果数据暂时不想写入数据库想先观察一段时间,可以用这个方式先写到文件里
     * @param $str
     * @param string $fileName
     */
    static function traceList($str, $fileName = 'trace')
    {
        self::writeFile($str, '/debugLogs', $fileName);
    }

    /**
     * @param $str
     * @param $dir
     * @throws \yii\base\Exception
     * @throws \yii\base\InvalidConfigException
     */
    private static function writeFile($str, $dir, $fileName = '')
    {
        $time = microtime(true);
        if (empty($fileName)) {
            $saveFileName = '/app-'.date('Y-m-d');
        } else {
            $saveFileName =  '/'.$fileName;
        }

        $logFile = Yii::$app->getRuntimePath() . $dir.$saveFileName.'.log';
        $logPath = dirname($logFile);
        if (!is_dir($logPath)) {
            FileHelper::createDirectory($logPath, 0775, true);
        }
        $log = new FileTarget();
        $log->logFile = $logFile;
        $log->messages[] = [$str, Logger::LEVEL_INFO, 'self', $time];
        $log->export();
    }

}