如何从标记服务的独占处理程序中使用已定义的通道?

时间:2019-01-28 21:42:25

标签: symfony symfony-2.8

我具有以下独白处理程序定义:

    # config_prod.yml
    app_generic:
        type: rotating_file
        max_files:      15
        path: "%param.app_logging_config.log_generic_file%"
        level: info
        channels: [app]

    app_api:
         max_files: 15
         path: "%param.app_logging_config.log_api_file%"
         level: info
         channels: [app]
         level: info

    app_response:
        max_files: 15
        path: "%param.app_logging_config.log_response_file%"
        channels: [app]
        level: info

在service.yml中,我的意图是使用上述定义的处理程序数组注入独白(@logger)。

#service.yml
app.app_logger:
    class: AppBundle\Classes\AppLogger
    arguments: ['@logger': ['@app_generic', '@app_api', '@app_response']]
    calls:
      - [init, ['%app_logging_config%']
    tags:
      - { name: monolog.logger, channel: app }

如何将参数传递给注入的参数?

  • 更新:

重新阅读description时,我只是通过标记服务定义来使用this方法:

app.logger:
    arguments: ['@logger']
    tags:
        - { name: monolog.logger, channel: app }
channels: ['app']

或者甚至(如果我理解正确),添加一个channels: ['app']密钥,并将其放在service参数中:

app.logger:
    arguments: ['@monolog.logger.app']

我无法使用(或通过转储查看)config_prod.yml中定义的处理程序。由于我认为其他“ fingers_crossed”处理程序可能会干扰我,因此将它们放在顶部。

我想知道,为什么以上(记录的)方法都不起作用?

1 个答案:

答案 0 :(得分:2)

处理程序

monolog:
    handlers:
        handler1: ...
        handler2: ...

自动注入@logger service中。

您似乎需要自定义记录器。请阅读有关The DependencyInjection Component

的信息

创建依赖项

services:
    app_generic:
        ....
    app_api:
         ....
    app_response:
        ....

创建custom_logger服务

custom_logger:
    class: Monolog\Logger
    arguments: ["my logger", ["@app_generic", "@app_api", "@app_response"]

在服务中注入自定义记录器

app.app_logger:
    class: AppBundle\Classes\AppLogger
    arguments: ['@custom_logger']
    calls:
      - [init, ['%app_logging_config%']