如何配置 Monolog 从日志中排除 404 错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何配置 Monolog 从日志中排除 404 错误相关的知识,希望对你有一定的参考价值。

参考技术A 有时候你的日志充满了不想看到的 404 HTTP 错误,举例来说,当攻击者扫描你的应用的一些知名的应用程序路径时(例如 /phpmyadmin)。当使用 fingers_crossed handler 时,你可以基于一个在 MonologBundle 配置中正常的解释来拒绝记录这些日志:

YAML:

# app/config/config.yml
monolog:
handlers:
main:
# ...
type: fingers_crossed
handler: ...
excluded_404s:
- ^/phpmyadmin
XML:

<!-- app/config/config.xml -->
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:monolog="http://symfony.com/schema/dic/monolog"
xsi:schemaLocation="http://symfony.com/schema/dic/services
http://symfony.com/schema/dic/services/services-1.0.xsd
http://symfony.com/schema/dic/monolog
http://symfony.com/schema/dic/monolog/monolog-1.0.xsd"
>
<monolog:config>
<monolog:handler type="fingers_crossed" name="main" handler="...">
<!-- ... -->
<monolog:excluded-404>^/phpmyadmin</monolog:excluded-404>
</monolog:handler>
</monolog:config>
</container>
PHP:

// app/config/config.php
$container->loadFromExtension('monolog', array(
'handlers' => array(
'main' => array(
// ...
'type' => 'fingers_crossed',
'handler' => ...,
'excluded_404s' => array(
'^/phpmyadmin',
),
),
),
));

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

【中文标题】在 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

以上是关于如何配置 Monolog 从日志中排除 404 错误的主要内容,如果未能解决你的问题,请参考以下文章

配置 symfony monolog 保留 apache 日志

如何向 Symfony/Monolog 日志输出添加附加信息(主机、URL 等)?

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

Monolog - Logging for PHP

独白发送旧日志

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