使用Monolog登录
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 3.0,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
使用Monolog登录
ob娱乐下载Symfony带有一个外部库,叫做独白-它允许您创建可以存储在各种不同位置的日志。
记录留言
要记录消息,请获取日志记录器
服务来自你的控制器中的容器:
12 3 4 5 6 7 8 9 10 11 12 13
公共函数indexAction(){$日志记录器=$这->get (“日志”);$日志记录器->信息(“我刚找到伐木工人”);$日志记录器->错误(“发生错误”);$日志记录器->关键(“我忘了关烤箱!”,数组(//在日志中包含额外的“上下文”信息“原因”= >“in_hurry”));/ /……}
的日志记录器
服务对于不同的日志级别/优先级有不同的方法。类型可以将记录器配置为执行不同的操作水平信息的(例如:发生错误时发送电子邮件).
看到LoggerInterface获取记录器上所有方法的列表。
日志存放位置
的配置在哪里日志存储在特定的生命周期中环境配置文件:config_dev.yml
而且config_prod.yml
.
缺省情况下,日志条目被写入var /日志/ dev.log
文件,当你在dev
环境。在刺激
环境,日志被写入var /日志/ prod.log
,但只有在请求期间,如果产生了错误或高优先级日志条目(即。错误()
,关键()
,alert ()
或紧急()
).
为了控制这一点,您将配置不同的处理程序处理日志条目,有时修改它们,并最终存储它们。
处理程序:将日志写入不同的位置
记录器有一个堆栈处理程序,每个都可以用来将日志条目写入不同的位置(例如文件、数据库、Slack等)。
提示
你可以也配置日志记录“通道”,类似于类别。每个渠道都有自己的自己的处理程序,这意味着您可以在不同的位置存储不同的日志消息。看到如何将消息记录到不同的文件.
ob娱乐下载类中预先配置了一些基本处理程序config_dev.yml
而且config_prod.yml
文件。看看这些真实的例子。
这个例子使用了两个处理程序:流
(写入文件)和syslog
命令写入日志syslog功能:
- YAML
- XML
- PHP
12 3 4 5 6 7 8 9 10 11 12 13 14 15
# app / config / config.yml独白:处理程序:# this "file_log"键可以是任何键file_log:类型:流# log到var/logs/(environment).log路径:“% kernel.logs_dir % / % kernel.environment % . log”#日志*所有*消息(调试是最低级别)水平:调试syslog_handler:类型:syslog#日志错误级别或更高级别的消息水平:错误
这定义了堆栈的处理程序,并且每个处理程序都按照其定义的顺序调用。
修改日志条目的处理程序
与其把日志文件写在某个地方,一些处理程序用于过滤或修改日志条目,然后将它们发送到其他处理程序。一个强大的内置处理程序称为fingers_crossed
用于刺激
默认为环境。它存储所有在请求期间记录消息,但是只有如果其中一个消息到达action_level
.举个例子:
- YAML
- XML
- PHP
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# app / config / config.yml独白:处理程序:filter_for_errors:类型:fingers_crossed#如果*one*日志错误或更高,将*all*传给file_logaction_level:错误处理程序:file_log#现在传递*所有*个日志,但仅当一个日志错误或更高file_log:类型:流路径:“% kernel.logs_dir % / % kernel.environment % . log”#仍然通过*所有*日志,仍然只记录错误或更高的日志syslog_handler:类型:syslog水平:错误
现在,即使有一个日志条目有错误
那么,水平或更高所有方法将该请求的日志项保存到文件中file_log
处理程序。这意味着您的日志文件将包含所有关于有问题的请求的详细信息使调试更加容易!
提示
命名为“file_log”的处理程序将不包含在堆栈本身中,因为它被用作类的嵌套处理程序fingers_crossed
处理程序。
请注意
如果你想覆盖独白
配置通过另一个配置文件,您将需要重新定义整个处理程序
堆栈。这两个文件中的配置不能合并,因为顺序很重要,而且合并不允许控制顺序。
如何旋转日志文件
随着时间的推移,日志文件可以增长为巨大的无论是在开发阶段还是在生产阶段。一个最佳实践解决方案是使用工具logrotateLinux命令在日志文件变得太大之前旋转它们。
另一种选择是让Monolog使用rotating_file
处理程序。这个处理程序每天创建一个新的日志文件,也可以自动删除旧文件。要使用它,只需设置类型
处理程序的选项rotating_file
:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10
# app / config / config_dev.yml独白:处理程序:主要:类型:rotating_file路径:' % kernel.logs_dir % / % kernel.environment % . log '水平:调试#要保留的最大日志文件数量#默认为0,这意味着无限的文件max_files:10