如果你最近创建了一个新的Symfony项目,你可能已经注意到发生在开发环境日志文件上的巨大变化。在过去,即便是最简单的页面,也要加载生成了成千上万行代码的dev.log文件。最新的Symfony版本中,默认是只有重要信息才会被记录下来。

下图清晰显示了dev.log文件的不同之处,它是由简单的Welcome to Symfony页面所创建的。在2.77中,日志是63行,但到了2.79中变成了只有3行:

哪些信息丢掉了? 

新版Symfony不再记录event频道的内容,它记录的信息就像这种:

1
2
3
event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure". [] []
event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest". [] []
...

我们的实现方法是,改变Symfony标准版的默认配置信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# app/config/config_dev.yml
 
# BEFORE 之前
monolog:
    handlers:
        main:
            type: stream
            path: "%kernel.logs_dir%/%kernel.environment%.log"
            level: debug
 
# AFTER 之后
monolog:
    handlers:
        main:
            type: stream
            path: "%kernel.logs_dir%/%kernel.environment%.log"
            level: debug
            channels: [!event]

!前缀告诉Monolog记录所有频道的信息,除了event的。你可以排除更多频道(如channels: [!event, !doctrine]),也可以将它留空,这样就可以再次开始记录event相关信息。

另外,这个改变可以应用到所有你的Symfony程序之中,不管程序所属的Symfony版本是什么。只需添加channels: [!event]到你的config_dev.yml中的Monolog配置信息之中,即可告别那些恼人的日志信息。

改进你的日志信息 

Monolog,被Symfony通过MonologBundle用来记录日志的类库,仍然被多数Symfony开发者所倚重。正如本文所述,即便是一个微小的配置变化也可能带来开发体验的正面提升。别忘了阅读下列文档继续学习: