Contributed by
Shaun Simmons
in #23707.

记录下尽可能多的信息是帮你在程序中除错的关键。但是,太多的日志就和太少的日志一样糟糕,因为所有的 "noise" 信息噪音都被加到日志中来。

这也是为何 Symfony 4.1 我们改进了 Monolog integration 以便允许你能排除对特定 HTTP 代码的记录。例如,在使用 fingers_crossed handler 时,使用以下配置可以在日志中忽略关于 403404 的错误:

1
2
3
4
5
6
7
# config/packages/monolog.yaml
monolog:
    handlers:
        main:
            # ...
            type: 'fingers_crossed'
            excluded_http_codes: [403, 404]

对于复杂需求,仅排除特定的被正则表达式所定义的URL也是可能的:

1
2
3
4
5
6
# config/packages/monolog.yaml
monolog:
    handlers:
        main:
            # ...
            excluded_http_codes: [{ 400: ['^/foo', '^/bar'] }, 403, 404]

如果你偏爱 XML 配置格式,上面的配置会是:

1
2
3
4
5
6
7
8
9
10
11
12
<!-- config/packages/monolog.xml -->
<monolog:config>
    <monolog:handler type="fingers_crossed" name="main" handler="...">
        <!-- ... -->
        <monolog:excluded-http-code code="400">
            <monolog:url>^/foo</monolog:url>
            <monolog:url>^/bar</monolog:url>
        </monolog:excluded-http-code>
        <monolog:excluded-http-code code="403" />
        <monolog:excluded-http-code code="404" />
    </monolog:handler>
</monolog:config>