1

对不起这个线程,但我真的不知道如何配置 Symfony2 来做我喜欢做的事情 :-) 我只是不明白“大局”。

我想为我的捆绑包中的一些核心内容创建一个自己的日志通道。此 Channel 通常应写入 dev 中自己的文件,对于 prod,应将其写入 prod.log 或被抑制(其中之一或可通过配置切换)。

我有一种感觉,该解决方案在许多文档和教程中共享。

  1. 我在哪里以及如何定义该频道?
  2. 处理程序是在 config.yml 中定义的,对吧?
  3. 我必须实现自己的处理程序类吗?

抱歉这个非常不具体的问题。

额外问题:4.当应该可以在控制器之外进行日志记录(访问容器)时,我必须实现服务,对吧?

4

2 回答 2

2

好的。我的错是误解和菜鸟的混合。在阅读了 Service-Doc 并将这个线程与那个(如何将一个服务中的日志写入单独的文件?)进行比较之后,我得到了它的工作:

我喜欢这个,因为它只是配置给定的类而不是实现它自己的:

配置.yml:

services:
    myOwnLogger:
        class:     Symfony\Bridge\Monolog\Logger
        arguments: [pushHandler, [@myOwnLogHandler]]

    myOwnLogHandler:
        class:     Monolog\Handler\StreamHandler
        arguments: [%kernel.logs_dir%/%kernel.environment%.myOwnChannel.log, 200] #200 = INFO

Egads,这太容易了,请原谅我不理解那个“其他”线程。

于 2013-04-04T08:52:23.587 回答
1

您可以查看将通道切换到不同的处理程序以了解如何将其配置为记录到不同的日志文件(如果您只想在开发中使用,请在 config_dev.yml 中)。

要创建新通道(默认情况下,记录器服务使用app通道),您需要使用 monolog.logger 标签将其注入服务中。每当您将日志发送到该记录器实例时,它将转到为该通道配置的处理程序。

您的@logger服务定义中的 将替换为您需要的通道的适当记录器实例。如果您不添加自定义标签,则@logger保持原样,您将获得默认 ( app) 频道。

于 2013-04-03T07:31:04.000 回答