Laravel请求和响应日志记录

8

我正在尝试捕获有关某个 Laravel 响应的问题,因此我正在使用 after 过滤器记录所有活动,但我无法弄清楚如何将请求和响应信息转储到日志中。

App::after(
    function ($request, $response) {
        Log::info('access.log', array('request' => $request->headers, 'response' => $response->headers));
    }
);

这段代码没有返回响应的状态码信息,而我对此最感兴趣。

有没有办法查看将信息传递到Web服务器的最终阶段时会发生什么?类似于这样的东西?

HTTP/1.1 200 OK
Date: Tue, 25 Nov 2014 22:35:17 GMT
Server: Apache/2.2.14 (Ubuntu)
X-Powered-By: PHP/5.4.34-1+deb.sury.org~lucid+1
Cache-Control: no-cache, max-age=0
Expires: Tue, 25 Nov 2014 22:35:17 GMT
Content-Type: application/json
Via: 1.1 localhost:8080
Vary: Accept-Encoding
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Length: 59

{"success":true,"result":{"min":5.7,"mean":9.7,"max":14.2}}
3个回答

2

虽然状态码最终会在头部返回,但在此阶段,您无法在$headers属性中找到它。您仍然可以通过调用$response->getStatusCode()来获取状态码。


1

虽然这是一篇旧文章,但我最近想要查看 Laravel 中的所有传入请求和所有传出响应。

此软件包支持 Laravel 5 和 5.1,因此我认为您也可以使用它。

安装方法如下:

Composer

Add prettus/laravel-request-logger to the "require" section of your composer.json file.

"prettus/laravel-request-logger": "1.0.*" Run composer update to get the latest version of the package.

or Run

composer require prettus/laravel-request-logger 

direct in your terminal

Laravel

In your config/app.php add 'Prettus\RequestLogger\Providers\LoggerServiceProvider' to the end of the providers array:

'providers' => array(
...,
'Prettus\RequestLogger\Providers\LoggerServiceProvider', ), 

Publish Configuration

php artisan vendor:publish --provider="Prettus\RequestLogger\Providers\LoggerServiceProvider" Configuration

In your config/request-logger.php file, you can change configuration for logger

'logger' => [

'enabled'   => true,

'handlers'  => ['Prettus\RequestLogger\Handler\HttpLoggerHandler'],

'file'      => storage_path("logs/http.log"),

'level'     => 'info',

'format'    => 'common' ]

示例:

{方法} {完整的URL}

[2015-04-03 00:00:00] local.INFO: GET http://prettus.local/user/1?param=lorem ["请求"] {方法} {完整的URL} {远程地址} {端口号}

[2015-04-03 00:00:00] local.INFO: GET http://prettus.local/user/1?param=lorem 192.168.10.1 80 ["请求"] {方法} {根目录} {URL} {完整的URL} {路径} {解码后的路径} {远程地址} {格式} {协议} {端口号} {查询字符串}

[2015-04-03 00:00:00] local.INFO: GET http://prettus.local http://prettus.local/user/1 http://prettus.local/user/1?param=lorem user/1 user/1 192.168.10.1 html http 80 param=lorem ["请求"] [{状态}] HTTP:{HTTP版本号} {内容}

[2015-04-03 00:00:00] local.INFO: [200] HTTP:1.1 {"id":1,"name":"Anderson Andrade", "email":"contato@andersonandra.de"} ["响应"]


我很乐意接受纠正,但据我所知,这个提供程序只适用于文件日志记录。我无法让它与elasticsearch处理程序配合工作。 - Joshua Fricke
这个能在Laravel 4.1上运行吗?我尝试了但失败了。有人能给点提示吗? - AMBasra
不确定,因为当时我在帖子中提到了5和5.1。在Github的描述中也只提到了版本5和5.1。 - davejal

0

除了将请求/响应转储到日志中,您还可以尝试此服务以获得漂亮的用户界面。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接