我是靠谱客的博主 小巧树叶,最近开发中收集的这篇文章主要介绍Laravel 重写日志,让日志更优雅,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

更改目的:

  • 重写了日志格式
  • 加入trace,一次请求的唯一标识
  • 加入error级别信息推送,事例中使用企业微信群助手
  • 让我们可以更及时、更优雅、更方便追踪日志信息
  • 有助于初学者了解Laravel框架

1。将文件 AppTool.phpLogger.phpLogServiceProvider.php复制到 app/Providers文件夹下,将文件BaseCommand.php复制到AppConsole

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

'providers' => [
 ……
 // 注册日志
  AppProvidersLogServiceProvider::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('GuzzleHttpClient')->request('POST', $url, [
      GuzzleHttpRequestOptions::JSON=>[
        "msgtype"=> "text",
        "text"=> [
          "content" => $content
        ]
      ]
    ]);
    $body = GuzzleHttpjson_decode($result->getBody()->getContents(), true);
  }

5 。日志内容

注意事项:

修改如下代码不同版本bind部分会有所不同,具体根据IlluminateFoundationApplication::registerCoreContainerAliaseslog信息修改。
如laravel6.x中为'log' => [IlluminateLogLogManager::class, PsrLogLoggerInterface::class],

修改方式就如下方代码

    ……
    // 注入全局容器
    $app->instance('Log', $logger);
    $app->bind('PsrLogLoggerInterface', function (Application $app) {
      return $app['log']->getLogger();
    });
    $app->bind('IlluminateLogLogManager', function (Application $app) {
      return $app['log'];
    });
    ……
有关console中使用时,建议重写IlluminateConsoleCommand::infoIlluminateConsoleCommand::lineIlluminateConsoleCommand::error,然后所有console继承BaseCommand
demo代码块:
use AppConsoleBaseCommand;

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 命令行输出:

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

最后

以上就是小巧树叶为你收集整理的Laravel 重写日志,让日志更优雅的全部内容,希望文章能够帮你解决Laravel 重写日志,让日志更优雅所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(95)

评论列表共有 0 条评论

立即
投稿
返回
顶部