6

我想在我的 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: ~

我得到一个 ErrorException Couldn't find constant Monolog\Logger::。如果有人能指出一种覆盖独白设置的方法,我将非常感激。谢谢!

4

3 回答 3

8

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

monolog:
    handlers: []

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

monolog:
    handlers:
        test:
            type:  test
            level: debug
于 2012-06-01T09:18:42.603 回答
3

如果您使用的是 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

正如您所看到的,它定义了处理程序main,并且仅使用nestedwhere因为它被.nestedmain

config_dev.yml是从中导入的,config_test.yml因此如果要覆盖测试环境的配置,则需要覆盖以下main处理程序config_test.yml

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

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

于 2012-11-12T16:50:19.743 回答
1

你有没有尝试过:

monolog:
    handlers: ~

它应该工作(我认为)。 看这里 没有处理程序,独白是不加载的。

于 2012-05-30T09:43:36.080 回答