使用Monolog登录

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.1,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

使用Monolog登录

欧宝娱乐app下载地址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等)。

提示

你可以配置日志记录“通道”,类似于类别。每个渠道都有自己的自己的处理程序,这意味着您可以在不同的位置存储不同的日志消息。看到如何将消息记录到不同的文件

欧宝娱乐app下载地址类中预先配置了一些基本处理程序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处理程序。

请注意

如果你想覆盖独白配置通过另一个配置文件,您将需要重新定义整个处理程序堆栈。这两个文件中的配置不能合并,因为顺序很重要,而且合并不允许控制顺序。

所有内置处理程序

独白是与生俱来的许多内置处理程序的电子邮件日志,发送他们到Loggly,或通知你在Slack。这些都被记录在MonologBundle本身中。有关完整列表,请参见独白配置

如何旋转日志文件

随着时间的推移,日志文件可以增长为巨大的无论是在开发阶段还是在生产阶段。一个最佳实践解决方案是使用工具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

向每个日志添加额外的数据(例如,唯一的请求令牌)

独白也支持处理器:可以动态地向日志条目添加额外信息的函数。

看到如何通过处理器向日志消息添加额外的数据获取详细信息。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。