【发布时间】:2018-11-27 15:37:30
【问题描述】:
在配置 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']
);
}
}
现在,如果只使用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 配置节点应该是一个标量,而不是一个数组
【问题讨论】:
-
您好 - 获得问题答案的最佳方式是发送电子邮件至 support@rollbar.com。这将使您直接与维护 Rollbar SDK 的开发人员取得联系。
-
谢谢@JesseGibbs,但这里的问题不在于 Rollbar 及其 SDK,而在于 Symfony 及其描述“服务”的方式,这似乎是症结所在。