johnTuringan / laravel-exception-logger
跨 Laravel 应用程序的统一异常日志系统
1.0.2
2018-08-26 05:36 UTC
Requires
- php: >=7.0
- graylog2/gelf-php: 1.5.*
- jenssegers/agent: 2.6.*
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
并替换适合使用它的应用程序的值。
推荐用法
异常
使用此包有多种方法,但强烈建议您遵循以下列出的实现
- 强烈建议您从
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
- 另一个选项是在 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/"
],
......
}
}