日志记录

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 5.3,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

日志记录

欧宝娱乐app下载地址Symfony提供了一个极简主义者PSR-3日志:日志记录器。符合twelve-factor应用方法从,它发送消息警告水平stderr

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

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

最小日志级别,默认的输出和日志格式也可以改变通过适当的构造函数的参数日志记录器。要做到这一点,覆盖“记录器”服务的定义

日志消息

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14
使用Psr\日志\LoggerInterface;公共函数指数(LoggerInterface美元日志记录器){美元日志记录器- >信息(“我刚日志记录器”);美元日志记录器- >错误(“出错”);美元日志记录器- >关键(“我离开烤箱上!”,(/ /包含额外的“上下文”在你的日志信息“原因”= >“in_hurry”]);/ /……}

日志记录器服务不同的日志级别/优先级有不同的方法。看到LoggerInterface所有的日志记录器的方法。

独白

欧宝娱乐app下载地址Symfony和无缝集成独白最流行的PHP日志库,创建和存储日志消息在各种不同的地方,引发各种行动。

例如,使用滔滔不绝的话您可以配置日志记录器的基础上做不同的事情水平消息(如。发送邮件时发生错误)。

运行这个命令安装基于独白记录器使用前:

1
美元作曲家需要symfony / mo欧宝娱乐app下载地址nolog-bundle

以下部分假设独白是安装。

日志存储在哪里

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

刺激环境,日志写入STDERR PHP流效果最好的现代集装箱应用程序部署到服务器磁盘写入权限。

如果你喜欢生产日志存储在一个文件,设置路径你的日志处理程序(s)使用(如文件的路径。var / log / prod.log)。

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

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

提示

你可以配置日志“通道”,这就像类别。每个通道可以有它自己的处理程序,这意味着您可以存储在不同的地方不同的日志消息。看到如何为不同的文件日志消息吗

欧宝娱乐app下载地址Symfony预配置一些基本的处理程序在默认monolog.yaml配置文件。检查这些一些实际的例子。

这个示例使用两个处理程序:(写一个文件)syslog写日志使用syslog功能:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#配置/包/刺激/ monolog.yaml独白:处理程序:#这“file_log”键可以是任何东西file_log:类型:# log var / log /(环境). log路径:“% kernel.logs_dir % / % kernel.environment % . log”# * *所有日志消息(调试是最低水平)水平:调试syslog_handler:类型:syslog#日志错误水平和更高的消息水平:错误

这定义了一个堆栈的处理程序和处理程序的顺序被称为它的定义。

请注意

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

处理程序修改日志条目

而不是写日志文件,一些处理程序是用于过滤或修改日志条目在发送之前其他处理程序。一个强大的,内置的处理程序fingers_crossed用于刺激默认的环境。它存储所有在一个请求,但日志消息只有将它们传递给另一个处理程序,如果达到的一个消息action_level。把这个例子:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#配置/包/刺激/ monolog.yaml独白:处理程序:filter_for_errors:类型:fingers_crossed#如果* *日志错误或更高,通过* * file_logaction_level:错误处理程序:file_log#现在通过* *日志,但只有一个日志错误或更高file_log:类型:路径:“% kernel.logs_dir % / % kernel.environment % . log”#仍然通过* *日志,仍然只有日志错误或更高syslog_handler:类型:syslog水平:错误

现在,如果连一个有一个日志条目错误水平或更高所有日志条目的请求是通过保存到一个文件file_log处理程序。这意味着你的日志文件将包含所有问题的细节要求,调试更容易!

提示

处理程序命名为“file_log”将不会被包括在堆栈本身是作为一个嵌套的处理程序fingers_crossed处理程序。

所有内置的处理程序

独白了许多内置的电子邮件日志处理程序,发送Loggly,或通知你松弛。这些都是记录在MonologBundle本身。一个完整的列表,请参阅独白配置

如何旋转你的日志文件吗

随着时间的推移,能长到日志文件巨大的在开发和生产。一个最佳实践的解决方案是使用一个工具一样logrotateLinux命令旋转日志文件之前,他们变得太大。

另一个选择是独白旋转文件供你使用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 '水平:调试#让最大数量的日志文件#默认为零,这意味着无限的文件max_files:10

使用一个日志记录器在服务

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

如果你想使用在自己的服务一个预先配置的日志记录器使用一个特定的频道(应用程序默认情况下),你可以自动装配独白渠道或使用monolog.logger标签的通道属性的解释依赖注入的参考

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

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

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

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。
欧宝娱乐app下载地址Symfony 5.3支持通过JoliCode