symfony - 如何更改某些 Controller 的 Monolog channel Symfony 3.4 或 4+

标签 symfony autowired monolog symfony4

我想更改 Monolog channel 。我的声明适用于某些类,但从未适用于 Controller 。

这是我的新管理 channel 声明:

#config/packages/dev/monolog.yaml
monolog:
    handlers:
        admin:
            type: stream
            path: "%kernel.logs_dir%/%kernel.environment%-admin.log"
            level: debug
            channels: ["admin"]

我通过添加标签成功地将它与我的身份验证器一起使用:
#config/services.yaml
# The form guard authenticator for the admin access
app.security.admin_authenticator:
    class: App\Security\AdminAuthenticator
    autowire: true
    tags:
        - { name: monolog.logger, channel: admin}
services.yaml的最后一行文件完成这项工作,我的身份验证器不再登录应用程序 channel ,而是登录管理 channel 。

现在,我想将此 channel 与 Admin 子目录下的 Controller 一起使用,因此我在声明中添加了一个类似的标记:
#config/services.yaml
App\Controller\Admin\:
    resource: '../src/Controller/Admin'
    tags:
        - 'controller.service_arguments'
        - { name: monolog.logger, channel: admin}

不过好像没什么影响。我仍在登录应用程序 channel 。
(我做了一些验证,比如刷新缓存)。我没有发现我的错误。

最佳答案

我无法用标签方法弄清楚。但是,您可以将 Monolog channel 定义为 Controller 构造函数的参数:

# monolog package configuration
monolog:
    channels: [ 'admin' ]
    handlers:
        admin:
            type: stream
            path: "%kernel.logs_dir%/%kernel.environment%-admin.log"
            level: debug
            channels: ["admin"]

自动接线配置:
#config/services.yaml
App\Controller\Admin\:
    resource: '../src/Controller/Admin'
    arguments:
        $logger: '@monolog.logger.admin'
    tags:
        - 'controller.service_arguments'

在你的 Controller 中
/**
 * SecurityController constructor.
 * @param LoggerInterface $logger
 */
public function __construct(LoggerInterface $logger)
{
    $this->logger = $logger;
}

关于symfony - 如何更改某些 Controller 的 Monolog channel Symfony 3.4 或 4+,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49219307/

相关文章:

java - 是否可以在 Spring 运行时 Autowiring 方法参数

php - 如何向 Symfony/Monolog 日志输出添加附加信息(主机、URL 等)?

php - Graylog2 与 Symfony 2 (Monolog)

php - 嵌套实体中的 Doctrine EntityManager clear 方法

php - 序列化时,Doctrine oneToMany 关系导致反向实体上的外键为 null

php - FOSRestBundle : ParamFetcher error

php - 如何使用 Monolog 在日志文件中输出带有新行的字符串?

php - symfony 和ratchet 在 null 上调用成员函数 get()

java - 没有可用的 'javax.sql.DataSource' 类型的合格 bean

java - Spring MVC - @Autowired 是如何工作的?