当前位置:首页 > CMS教程 > 其它CMS > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2022-04-19 08:59:30 浏览: 评论:0 

这篇文章主要介绍了Laravel 重写日志,让日志更优雅,laravel框架俗称优雅的框架,所以有想对laravel中的日志重写使其更加方便的记录信息获取信息的同学可以参考下。

更改目的:

重写了日志格式

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

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

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

有助于初学者了解Laravel框架

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

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

  1. 'providers' => [ 
  2.  …… 
  3.  // 注册日志 
  4.   App\Providers\LogServiceProvider::class 
  5.  …… 
  6.  ]; 

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

  1. // php-fpm方式调用 日志路径 /opt/logs/xxx.log /opt/logs/xxx.error 
  2. \Log::info("info"); 
  3. \Log::debug("debug"); 
  4. \Log::error("error"); 
  5. // 在cli方式调用 日志路径 /opt/clogs/xxx.log /opt/clogs/xxx.error 
  6. app('cLog')->info("info"); 
  7. app('cLog')->debug("debug"); 
  8. app('cLog')->error("error"); 

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

  1.   /** 
  2.    * 推送错误信息 
  3.    * @param $message 
  4.    */ 
  5.   public function pushErrorMessage($message
  6.   { 
  7.     $content = "app:"static::getAppName() ."  
  8. src: ". static::getRequestSource() ." 
  9. trace:". self::getTrace() ." 
  10. url:". static::$uri_info ." 
  11. error: ". $message ." 
  12. time:". date("Y-m-d H:i:s"); 
  13.     // 测试群 
  14.     $url = "xxxxxxxxxxxx"
  15.     $result = app('\GuzzleHttp\Client')->request('POST'$url, [ 
  16.       \GuzzleHttp\RequestOptions::JSON=>[ 
  17.         "msgtype"=> "text"
  18.         "text"=> [ 
  19.           "content" => $content 
  20.         ] 
  21.       ] 
  22.     ]); 
  23.     $body = \GuzzleHttp\json_decode($result->getBody()->getContents(), true); 
  24.   } 

5 。日志内容

注意事项:

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

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

修改方式就如下方代码

  1. …… 
  2. // 注入全局容器 
  3. $app->instance('Log'$logger); 
  4. $app->bind('Psr\Log\LoggerInterface'function (Application $app) { 
  5.   return $app['log']->getLogger(); 
  6. }); 
  7. $app->bind('\Illuminate\Log\LogManager'function (Application $app) { 
  8.   return $app['log']; 
  9. }); 
  10. …… 

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

demo代码块:

  1. use App\Console\BaseCommand; 
  2.  
  3. class Demo extends BaseCommand 
  4.   protected $signature = 'command:demo'
  5.   protected $description = 'demo'
  6.   public function __construct() 
  7.   { 
  8.     parent::__construct(); 
  9.   } 
  10.   public function handle() 
  11.   { 
  12.     $this->info('this is info!'); 
  13.     $this->line('this is line!'); 
  14.     $this->error('this is error!!!'); 
  15.   } 

demo 命令行输出:

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

Tags: Laravel重写日志

分享到: