init
This commit is contained in:
commit
428729ebf7
|
@ -0,0 +1,106 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace dominion\log;
|
||||||
|
|
||||||
|
use Yii;
|
||||||
|
use yii\log\FileTarget;
|
||||||
|
|
||||||
|
class Loger extends FileTarget
|
||||||
|
{
|
||||||
|
public $logVars = [];
|
||||||
|
|
||||||
|
public $format = 'result';
|
||||||
|
|
||||||
|
public static function log($type, $result, $prefixFile = '', $log = false)
|
||||||
|
{
|
||||||
|
$config = Yii::$app->params['log'];
|
||||||
|
if ($type == 'error' || YII_DEBUG || $log)
|
||||||
|
{
|
||||||
|
$model = new Loger;
|
||||||
|
$model->maxFileSize = isset($config['maxFileSize']) ? $config['maxFileSize'] : 10;
|
||||||
|
$model->maxLogFiles = isset($config['maxLogFiles']) ? $config['maxLogFiles'] : 10000;
|
||||||
|
$model->enableRotation = isset($config['enableRotation']) ? (bool)$config['enableRotation'] : true;
|
||||||
|
$dir = Yii::getAlias($config['dir']);
|
||||||
|
$model->logFile = $dir . $prefixFile . (empty($prefixFile) ? $type : ucfirst($type) ) . '.log';
|
||||||
|
$model->messages = [$result];
|
||||||
|
$model->export();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($config['longRequestTime'], $result['time']) && $result['time'] > $config['longRequestTime'])
|
||||||
|
{
|
||||||
|
|
||||||
|
$model = new Loger;
|
||||||
|
$model->maxFileSize = isset($config['maxFileSize']) ? $config['maxFileSize'] : 10;
|
||||||
|
$model->maxLogFiles = isset($config['maxLogFiles']) ? $config['maxLogFiles'] : 10000;
|
||||||
|
$model->enableRotation = isset($config['enableRotation']) ? (bool)$config['enableRotation'] : true;
|
||||||
|
$dir = Yii::getAlias($config['dir']);
|
||||||
|
$model->logFile = $dir . 'longRequestTime.log';
|
||||||
|
$model->format = 'time';
|
||||||
|
$model->messages = [$result['time']];
|
||||||
|
$model->export();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function formatMessage($result)
|
||||||
|
{
|
||||||
|
|
||||||
|
$output = '';
|
||||||
|
$url = '';
|
||||||
|
$post = '';
|
||||||
|
$jwt = 'console';
|
||||||
|
$HTTP_X_REAL_IP = '';
|
||||||
|
if(!is_a(Yii::$app->request, 'yii\console\Request'))
|
||||||
|
{
|
||||||
|
$url = Yii::$app->request->url;
|
||||||
|
$post = json_encode(Yii::$app->request->post(), JSON_UNESCAPED_UNICODE);
|
||||||
|
$jwt = str_replace('Bearer ', '', Yii::$app->request->getHeaders()->get('Authorization'));
|
||||||
|
$HTTP_X_REAL_IP = Yii::$app->request->getHeaders()->get('HTTP_X_REAL_IP');
|
||||||
|
}
|
||||||
|
switch ($this->format)
|
||||||
|
{
|
||||||
|
case 'time':
|
||||||
|
$output = sprintf(
|
||||||
|
"[%s]\t%s\t%s\t%s",
|
||||||
|
date('Y-m-d H:i:s'),
|
||||||
|
$url,
|
||||||
|
json_encode($result, JSON_UNESCAPED_UNICODE),
|
||||||
|
$post
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case 'json':
|
||||||
|
$error = $result[0];
|
||||||
|
if(is_a($error, 'Exception'))
|
||||||
|
{
|
||||||
|
$message = $error->getMessage() . ' in '.$error->getFile().':'.$error->getLine();
|
||||||
|
$output = json_encode([
|
||||||
|
'date' => date('Y-m-d H:i:s'),
|
||||||
|
'url' => $url,
|
||||||
|
'message' => $message ,
|
||||||
|
'trace' => $error->getTraceAsString(),
|
||||||
|
'graphql' => $post,
|
||||||
|
'jwt' => $jwt,
|
||||||
|
'HTTP_X_REAL_IP' => $HTTP_X_REAL_IP
|
||||||
|
], JSON_UNESCAPED_UNICODE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// $output = print_r($result, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// var_dump($output);
|
||||||
|
break;
|
||||||
|
case 'result':
|
||||||
|
default :
|
||||||
|
$output = sprintf(
|
||||||
|
"[%s]\t%s\t%s\t%s",
|
||||||
|
date('Y-m-d H:i:s'),
|
||||||
|
$url,
|
||||||
|
$post,
|
||||||
|
json_encode($result, JSON_UNESCAPED_UNICODE)
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"name": "dominion/log",
|
||||||
|
"description": "Функционал для работы с log",
|
||||||
|
"type": "yii2-extension",
|
||||||
|
"keywords": ["yii2","extension"],
|
||||||
|
"license": "MIT",
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Rybkin Sasha",
|
||||||
|
"email": "ribkin@dominion.ru"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"yiisoft/yii2": "~2.0.0"
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"dominion\\log\\": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue