johnTuringan/laravel-exception-logger

跨 Laravel 应用程序的统一异常日志系统

1.0.2 2018-08-26 05:36 UTC

This package is not auto-updated.

Last update: 2024-09-16 11:04:18 UTC


README

这是一个为 Laravel 应用程序制作的异常日志库

安装

运行以下命令

$ composer require johnturingan/laravel-exception-logger

或者像下面那样修改你的 composer.json

"require": {
	...
	"johnturingan/laravel-exception-logger": "*",
	...
}

然后运行 $ composer install$ composer update,任选其一。

Laravel 安装

您需要通过访问 config/app.php 文件来注册此包,并将其添加到提供者列表中。

'providers' => [
	...
	Snp\Logger\Providers\LaravelProvider::class
	...
]

或者在 Lumen 应用程序中

$app->register(Snp\Logger\Providers\LumenProvider::class);

然后使用以下命令发布它

$ php artisan vendor:publish --provider="Snp\Logger\Providers\LaravelProvider::class"

请注意,配置可能因应用程序而异,您必须检查您的配置文件 config/logging.php 并替换适合使用它的应用程序的值。

推荐用法

异常

使用此包有多种方法,但强烈建议您遵循以下列出的实现

  1. 强烈建议您从

Snp\Logger\Exceptions\Exception

Then set corresponding values info it like domain, reference_id, etc..

If you extend your exception from **Snp\Logger\Exceptions\Exception** class, it will automatically log it in Graylog or in storage logs if configured in config/logging.php
  1. 另一个选项是在 App\Exceptions\Handler 文件中使用它。以下是操作方法
    • Snp\Logger\Exceptions\Exception 扩展 App\Exceptions\Handler

    • report() 方法中,向异常 $e 中添加 "app_fault" 属性,以确定哪个应用程序抛出了错误。

    • 然后创建一个 Snp\Logger\Info 对象,并将其分配给异常 $e 中的 "log_info" 属性,然后将异常传递给 report() 方法。

      以下是一个示例

       public function report(Exception $e)
       {
       
           $e->{'app_fault'} = 'API-CMS';
           
           $e->{'log_info'} = (new Info())
               ->setsetReferenceId('domain.com')
               ->setDomain('domain.com')
               ->setSessionId('hashed_session')
               ->setLanguageCode('en')
               ->setMemberId(1)
               ->setUrl('/')
               ->setIp('127.0.0.1')
               ;
       
           parent::report($e);
       }
      

      使用此选项,您可以轻松管理所有异常,因为它们只在一个地方。

日志输出示例

如果所有属性都已相应填写,以下是在 storate/logs/laravel.log 中预期的日志输出

[2018-03-21 07:14:56] production.ERROR: SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://ws.aqzbouat.com/announcementWSs.asmx?WSDL'
{
   "app_fault":"API-SOAP",
   "message":"An error occured",
   "code":0,
   "file":"/src/Exceptions/Handler.php",
   "line":63,
   "reference_id":"3f7577e4380470f232f188565957f233d7cd69c3",
   "platform":"desktop",
   "session_id":"AA2B6A84-0DAC-420F-8D23-36DD3A99266B",
   "member_id":"12345",
   "country_code":PH,
   "language_code":"zh-hans",
   "url":"api/v2/getuser",
   "domain":"domain.com",
   "ip":"127.0.0.1",
   "request_data":{
      "operatorId":"1"
   },
   "headers":{
      "cookie":[
       "e_log_session=3f7577e4380470f232f188565957f233d7cd69c3"
      ],
      "accept-encoding":[
         "gzip, deflate"
      ],
      "referer":[
         "http://domain.com/"
      ],
      ......
   }
}