在 Silex 应用程序中使用 Monolog 跟踪用户名

Keep a trace of the username with Monolog in a Silex app

我有一个 Silex 应用程序,我已经设置了一个 Monolog 记录器服务。在调试模式下,日志类似于(信息级别):

[2018-02-21 09:08:26] appName.INFO: > GET /customers [] []
[2018-02-21 09:08:27] appName.INFO: < 200 [] []

我想跟踪生成这些请求的用户,方法是在日志中写入用户名,例如在日期旁边。

有没有办法自定义 Monolog 模板来实现?

当用户使用请求时简单地执行此操作:

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

// create a log channel
$logger = new Logger('name');
$logger->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));

//Add following lines
$username = 'foobar'; //Ofcourse your user's username
$logger->info($username);

你还期待什么?

您正在寻找 log processor & formatter。使用自定义日志处理器将用户名添加到日志记录中,然后使用格式化程序将该值包含在日志字符串行中。

或者如果您愿意,您可以简单地将用户名添加到日志的上下文中:

$logger->log('User logged in', ['username' => $username]);