gpt4 book ai didi

laravel - 如何在 Laravel 5.7 中添加 auth 用户 ID 或 session 登录?

转载 作者:行者123 更新时间:2023-12-04 14:21:50 24 4
gpt4 key购买 nike

我的目标

我愿意将当前经过身份验证的用户 ID 添加到日志行(我正在使用系统日志驱动程序)作为自定义日志格式。

作为我研究的一部分,我看到有不错的包裹和 tutorials将用户事件记录到数据库。但至少现在我的意图是在没有额外包的情况下继续前进,并像我目前所做的那样登录到 syslog

我的应用中典型的日志调用如下所示:

logger()->info("Listing all items");

我也可以这样做:

$uid = Auth::id();
logger()->info("Listing all items for {$uid}");

这与文档示例所建议的类似:

Docs Example

我目前正在为某些行执行此操作,但由于我想在所有日志调用中都使用它,所以每次我记录某些内容时都会重复自己。

期望的输出

当前:

Dec 10 23:54:05 trinsic Laravel[13606]: local.INFO: Hello world []

期望:

Dec 10 23:54:05 trinsic Laravel[13606]: local.INFO [AUTH_USER_ID=2452]: Hello world []

我的方法

我已尝试点击记录器并成功更改格式,as suggested on docs .

但我目前的问题是,在 CustomizeFormatter 类被执行时,Auth id 似乎还没有被解析(对此不确定,但是 dd() 返回 null,所以这是我的猜测):

<?php

namespace App\Logging;

use Illuminate\Support\Facades\Auth;
use Monolog\Formatter\LineFormatter;

class CustomizeFormatter
{
/**
* Customize the given logger instance.
*
* @param \Illuminate\Log\Logger $logger
* @return void
*/
public function __invoke($logger)
{
$authUser = Auth::id(); // null

foreach ($logger->getHandlers() as $handler) {
$formatter = new LineFormatter("%channel%.%level_name% [AUTH={$authUser}]: %message% %extra%");
$handler->setFormatter($formatter);
}
}
}

设置

Laravel 5.7日志驱动程序:syslog

    // config/logging.php

'syslog' => [
'driver' => 'syslog',
'tap' => [ App\Logging\CustomizeFormatter::class ],
'level' => 'debug',
],

我的问题

  • 此时是否有任何方法来解析 auth 用户,或有任何其他方法来实现此目的?

最佳答案

尝试将请求对象作为构造函数参数传递给您的自定义格式化程序类,然后从那里访问用户:

<?php

namespace App\Logging;

use Illuminate\Support\Facades\Auth;
use Monolog\Formatter\LineFormatter;

class CustomizeFormatter
{
public $request;

public function __construct(Request $request)
{
$this->request = $request;
}

/**
* Customize the given logger instance.
*
* @param \Illuminate\Log\Logger $logger
* @return void
*/
public function __invoke($logger)
{
$authUser = $this->request->user();
foreach ($logger->getHandlers() as $handler) {
$formatter = new LineFormatter("%channel%.%level_name% [AUTH={$authUser->id}]: %message% %extra%");
$handler->setFormatter($formatter);
}
}
}

关于laravel - 如何在 Laravel 5.7 中添加 auth 用户 ID 或 session 登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53716877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com