laravel log4php,Laravel 重写日志,让日志更优雅

更改目的:

重写了日志格式

加入trace,一次请求的唯一标识

加入error级别信息推送,事例中使用企业微信群助手

让我们可以更及时、更优雅、更方便追踪日志信息

有助于初学者了解Laravel框架

1。将文件 AppTool.php、Logger.php、LogServiceProvider.php复制到 app/Providers文件夹下,将文件BaseCommand.php复制到App\Console下

2 。在config/app.php→providers中加入

'providers' => [

……

// 注册日志

App\Providers\LogServiceProvider::class

……

];

3。在项目中使用如下方式调用

// php-fpm方式调用 日志路径 /opt/logs/xxx.log /opt/logs/xxx.error

\Log::info("info");

\Log::debug("debug");

\Log::error("error");

// 在cli方式调用 日志路径 /opt/clogs/xxx.log /opt/clogs/xxx.error

app('cLog')->info("info");

app('cLog')->debug("debug");

app('cLog')->error("error");

4。在日志级别为error时,会执行推送,本事例中采用企业微信群推送

/**

* 推送错误信息

* @param $message

*/

public function pushErrorMessage($message)

{

$content = "app:". static::getAppName() ."

src: ". static::getRequestSource() ."

trace:". self::getTrace() ."

url:". static::$uri_info ."

error: ". $message ."

time:". date("Y-m-d H:i:s");

// 测试群

$url = "xxxxxxxxxxxx";

$result = app('\GuzzleHttp\Client')->request('POST', $url, [

\GuzzleHttp\RequestOptions::JSON=>[

"msgtype"=> "text",

"text"=> [

"content" => $content

]

]

]);

$body = \GuzzleHttp\json_decode($result->getBody()->getContents(), true);

}

5 。日志内容

注意事项:

修改如下代码不同版本bind部分会有所不同,具体根据\Illuminate\Foundation\Application::registerCoreContainerAliases中log信息修改。

如laravel6.x中为'log' => [\Illuminate\Log\LogManager::class, \Psr\Log\LoggerInterface::class],,

修改方式就如下方代码

……

// 注入全局容器

$app->instance('Log', $logger);

$app->bind('Psr\Log\LoggerInterface', function (Application $app) {

return $app['log']->getLogger();

});

$app->bind('\Illuminate\Log\LogManager', function (Application $app) {

return $app['log'];

});

……

有关console中使用时,建议重写\Illuminate\Console\Command::info、\Illuminate\Console\Command::line、\Illuminate\Console\Command::error,然后所有console继承BaseCommand

demo代码块:

use App\Console\BaseCommand;

class Demo extends BaseCommand

{

protected $signature = 'command:demo';

protected $description = 'demo';

public function __construct()

{

parent::__construct();

}

public function handle()

{

$this->info('this is info!');

$this->line('this is line!');

$this->error('this is error!!!');

}

}

demo 命令行输出:

0666b5742aeb8f5af4b007791c3c526b.png

到此这篇关于Laravel 重写日志,让日志更优雅的文章就介绍到这了,更多相关Laravel 重写日志内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2021-03-17

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值