yaml/symfony2:覆盖配置


yaml/symfony2: Override configurations

我想在我的config_test.yml中覆盖config_dev.yml中的一些配置。因此,想象一下 config_dev.yml 中的以下部分:

monolog:
    handlers:
        main:
            type: stream
            path: %kernel.logs_dir%/%kernel.environment%.log
            level: debug
        firephp:
            type: firephp
            level: info

在我的测试环境中,我根本不想要记录器。所以我尝试了

monolog: ~

没有效果。我也试过:

monolog:
    handlers:
        main: ~
        firephp: ~

再次没有任何效果。然后我测试了

monolog:
    handlers:
        main:
            type: ~
            path: ~
            level: ~
        firephp:
            type: ~
            level: ~

我得到一个错误异常Couldn't find constant Monolog'Logger::.如果有人能指出一种覆盖单语设置的方法,我将不胜感激。谢谢!

最好将处理程序定义为空数组:

monolog:
    handlers: []

UPD1:有特殊类型的记录器:test 和 null,您可以使用它们:

monolog:
    handlers:
        test:
            type:  test
            level: debug

如果您使用的是 Symfony2 标准版

您的config_dev.yml看起来像这样开箱即用的独白:

# config_dev.yml
monolog:
  handlers:
    main:
      type: fingers_crossed
      action_level: error
      handler: nested
    nested:
      type: stream
      path: %kernel.logs_dir%/%kernel.environment%.log
      level: debug

如您所见,这定义了处理程序mainnested其中仅使用 nested,因为它被 main 引用。

config_dev.yml是从config_test.yml进口的,所以如果要覆盖测试环境的配置,则需要覆盖 config_test.yml 中的main处理程序:

# config_text.yml
monolog:
    handlers:
      main:
        type: test

这将阻止 monolog 创建日志文件。

你试过吗:

monolog:
    handlers: ~

它应该有效(我认为)。看这里如果没有处理程序,则不会加载单log。