在配置 Rollbar Monolog 配置时,可以设置的选项之一是person_fn
功能。该配置 Rollbar 期望是某种“可调用的”,在调用时将返回有关用户的信息。
为了获取有关当前用户的信息,该方法将需要 Session 处理程序,以获取当前登录的用户。我可以编写一个服务来做到这一点:
<?php
class UserService {
private $session;
public function __construct(SessionInterface $session) {
$this->session = $session;
}
public function RollbarUserFn() {
$u = $this->session->get('current_user');
return array(
'id' => $u['id'],
'username' => $u['username']
);
}
}
现在,如果只是 using call_user_func
,则该RollbarUserFn
方法不是静态的(因为它具有依赖项),因此不能使用"UserService::RollbarUserFn"
(字符串),而是实例化它并将对象传入:
$us = new UserService($sessionInterface);
call_user_func(array($us, 'RollbarUserFn'));
但是我怎样才能在配置 YAML 文件中做到这一点呢?我试过类似的东西:
monolog:
handlers:
rollbar:
type: rollbar
token: '123123123'
config:
environment: '%env(APP_ENV)%'
person_fn: [ '@UserService', 'RollbarUserFn' ]
但这会引发错误,即person_fn
配置节点应为标量,而不是数组