1、实际项目中打日志是一个非常重要的一项工作,日志收集直接关系到系统后期优化和故障排查的重要依据,因此打印日志的规范化也直接影响到后期日志查看的便捷性
日志效果如下
代码如下
<?php
namespace app\index\controller;
/**
* 使用说明:
* 在构造方法中设置商户id和文件前缀
* LoggerUtils::setShopId(33);
* LoggerUtils::setFilePrefix('goods');
* Class LoggerUtils
* @package app\index\controller
*/
class LoggerUtils
{
private static $shopId=0;
private static $filePrefix='default_';
/**
* 设置文件前缀
* @param string $filePrefix
*/
public static function setFilePrefix($filePrefix)
{
self::$filePrefix = $filePrefix;
}
/**
* 设置商户id
* @param int $shopId
*/
public static function setShopId($shopId)
{
self::$shopId = $shopId;
}
/**
* 打印日志
* @param null $content 日志描述
* @param null $data 数据 string/array
* @param false $isBr 是否换行 默认不换行
*/
public static function log($content=null,$data=null,$isBr=false){
$date = date('Y-m-d');
$path = "./log/{$date}_openApiLog/";
$time = date('Y-m-d H:i:s');
if(!is_dir($path)){
mkdir($path,0777);
}
$fileName = self::$filePrefix.'.'.self::$shopId.'.log';
$uri = $path.$fileName;
if(is_array($data)){
$data=json_encode($data);
}
if($isBr){
$isBr=PHP_EOL;
}else{
$isBr='';
}
$con = "[".$time."] ".$content.'#'.$data.PHP_EOL.$isBr;
file_put_contents($uri,$con,FILE_APPEND);
}
}
调用方式
class Index extends Frontend
{
public function __construct(Request $request = null)
{
parent::__construct($request);
LoggerUtils::setShopId(33); //设置商户id
LoggerUtils::setFilePrefix('goods'); //设置日志文件名
}
protected $noNeedLogin = '*';
protected $noNeedRight = '*';
protected $layout = '';
public function index()
{
//打印日志
LoggerUtils::log('商户原始数据','2222');
LoggerUtils::log('平台生成签名','fdafdafadsf',true);
}
}
欢迎各位大佬指正