在 Symfony2 中使用 Monolog 进行日志旋转

Posted

技术标签:

【中文标题】在 Symfony2 中使用 Monolog 进行日志旋转【英文标题】:Log rotating with Monolog in Symfony2 【发布时间】:2013-12-06 06:01:51 【问题描述】:

我想知道是否有可能在 Symfony2 中配置 Monolog 以每天创建一个新的日志文件,例如:2013-11-21-prod.log。

【问题讨论】:

【参考方案1】:

有一个叫rotating_file的记录器。 这是一个示例配置:

monolog:
    handlers:
        main:
            type:  rotating_file
            path:  %kernel.logs_dir%/%kernel.environment%.log
            level: debug

【讨论】:

@Seldaek 也许您可以发布一个答案来说明它?作为 Monolog 的创建者,您比我更了解如何实现这一目标! ;-) 作为 Monolog 的创建者,我知道我不想重写一个一直存在并且运行良好的工具,但我不是 logrotate pro :) 无论如何@loicfavory 发布了一个示例 logrotate 配置在下面,所以我会留在那里。我只是想指出,并非所有任务都最好用 php 完成。 这正是我想要的。非常感谢。 如果它也有压缩旧日志的选项会更好。 :)【参考方案2】:

在linux上,可以使用logrotate(不知道windows或者macos上是否存在其他解决方案)

在 /etc/logrotate.d/ 中创建一个文件(例如 sf2_myapp)并添加此内容:

/path/to/your/symfony_app/app/logs/prod.log 
        daily
        missingok
        rotate 14
        compress

您应该在 Google 上查找 logrotate 以了解更多信息

【讨论】:

如果您只是旋转一个文件并且没有使用任何脚本(如 postrotate),则不需要共享脚本。 如果您想在制作此配置文件后手动强制旋转,请运行logrotate --force /etc/logrotate.d/sf2_myapp

以上是关于在 Symfony2 中使用 Monolog 进行日志旋转的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2/Monolog:日志级别 - 仅显示 app.INFO?

Symfony2 Monolog 配置为使用 raven 处理程序(Sentry)

如何在 Symfony 中对 Monolog 消息进行高级过滤?

配置 symfony monolog 保留 apache 日志

Graylog2 与 Symfony 2 (Monolog)

Symfony 2:将特定通道/处理程序的记录器注入服务