【问题标题】:Keep a trace of the username with Monolog in a Silex app在 Silex 应用程序中使用 Monolog 跟踪用户名
【发布时间】:2018-07-31 17:48:49
【问题描述】:

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

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

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

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

【问题讨论】:

标签: php logging silex monolog


【解决方案1】:

只需在用户消费请求时执行此操作:

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);

你还期待什么?

【讨论】:

  • 感谢您的回答,我在路由中间件中使用了类似的语法。它允许我仅在特定路由上记录用户名。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 2022-12-03
    相关资源
    最近更新 更多