如果你最近创建了一个新的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开发者所倚重。正如本文所述,即便是一个微小的配置变化也可能带来开发体验的正面提升。别忘了阅读下列文档继续学习:
如何把日志记录到不同文件中,这对于把信息从某些频道中存储到“不同于dev.log和prod.log”的日志文件中是很有用的。
如何轻松创建新的日志频道,以便你能分别地处理那些信息,或者将它们存至不同的文件。
如何注入一个预配置的记录器到服务中,以便生成的信息可以被记录到给定频道。