日志记录

编辑本页

日志记录

ob娱乐下载Symfony带有极简主义风格PSR-3日志:日志记录器.符合十二因素应用方法论时,它发送从警告水平stderr

最小日志级别可以通过设置SHELL_VERBOSITY环境变量:

SHELL_VERBOSITY价值 最低日志级别
-1 错误
1 请注意
2 信息
3. 调试

的构造函数传递适当的参数,也可以更改最小日志级别、默认输出和日志格式日志记录器.为了做到这一点,重写“记录器”服务定义

记录留言

要记录消息,在控制器或服务中注入默认记录器:

12 3 4 5 6 7 8 9 10 11 12 13 14
使用Psr日志LoggerInterface公共函数指数(LoggerInterface日志记录器日志记录器->信息(“我刚找到伐木工人”);日志记录器->错误(“发生错误”);日志记录器->关键(“我忘了关烤箱!”, (//在日志中包含额外的“上下文”信息“原因”= >“in_hurry”]);/ /……}

日志记录器服务对于不同的日志级别/优先级有不同的方法。看到LoggerInterface获取记录器上所有方法的列表。

独白

ob娱乐下载Symfony与独白是最流行的PHP日志库,用于在各种不同的位置创建和存储日志消息,并触发各种操作。

例如,使用Monolog,您可以配置记录器来执行基于水平信息的(例如:发生错误时发送电子邮件).

运行此命令安装基于独白的记录器,然后再使用它:

1
作曲家需要symfony/monoob娱乐下载log-bundle

下面几节假设已经安装了Monolog。

日志存放位置

缺省情况下,日志条目被写入var / log / dev.log文件,当你在dev环境。

刺激环境,日志被写入STDERR PHP流,它在部署到没有磁盘写权限的服务器上的现代容器应用程序中工作得最好。

如果希望将生产日志存储在文件中,请设置路径到要使用的文件的路径(例如。var / log / prod.log).

处理程序:将日志写入不同的位置

记录器有一个堆栈处理程序,每个都可以用来将日志条目写入不同的位置(例如文件、数据库、Slack等)。

提示

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

ob娱乐下载Symfony在默认情况下预先配置了一些基本处理程序monolog.yaml配置文件。看看这些真实的例子。

这个例子使用了两个处理程序:(写入文件)和syslog命令写入日志syslog功能:

  • YAML
  • XML
  • PHP
12 3 4 5 6 7 8 9 10 11 12 13 14 15
#配置/包/刺激/ monolog.yaml独白:处理程序:# this "file_log"键可以是任何键file_log:类型:# log到var/log/(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
#配置/包/刺激/ monolog.yaml独白:处理程序: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
#配置/包/刺激/ monolog.yaml独白:处理程序:主要:类型:rotating_file路径:' % kernel.logs_dir % / % kernel.environment % . log '水平:调试#要保留的最大日志文件数量#默认为0,这意味着无限的文件max_files:10

在服务中使用记录器

如果您的应用程序使用服务自动配置,其类实现的任何服务Psr \ \ LoggerAwareInterface日志是否会收到对其方法的调用setLogger ()使用默认记录器服务作为服务传递。

如果您想在自己的服务中使用预先配置的记录器,该记录器使用特定通道(应用程序默认情况下),您可以选择自动连线独白频道或使用monolog.logger标记。通道属性中解释的依赖注入参考

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

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

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

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。
ob娱乐下载Symfony 6.2支持通过苏禄人
ob娱乐下载Symfony 6.2支持通过Les-Tilleuls.coop