Cover of the book Symfony 5: The Fast Track

Symfony 5: The Fast Track is the best book to learn modern Symfony development, from zero to production. +300 pages in full color showing how to combine Symfony with Docker, APIs, queues & async tasks, Webpack, Single-Page Applications, etc.

Buy printed version

How to Configure Monolog to Exclude Specific HTTP Codes from the Log

4.4 version
Maintained Unmaintained

How to Configure Monolog to Exclude Specific HTTP Codes from the Log

Sometimes your logs become flooded with unwanted HTTP errors, for example, 403s and 404s. When using a fingers_crossed handler, you can exclude logging these HTTP codes based on the MonologBundle configuration:

  • YAML
    1
    2
    3
    4
    5
    6
    7
    8
    # config/packages/prod/monolog.yaml
    monolog:
        handlers:
            main:
                # ...
                type: fingers_crossed
                handler: ...
                excluded_http_codes: [403, 404, { 400: ['^/foo', '^/bar'] }]
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <!-- config/packages/prod/monolog.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
            https://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/monolog
            https://symfony.com/schema/dic/monolog/monolog-1.0.xsd">
    
        <monolog:config>
            <monolog:handler type="fingers_crossed" name="main" handler="...">
                <!-- ... -->
                <monolog:excluded-http-code code="403">
                    <monolog:url>^/foo</monolog:url>
                    <monolog:url>^/bar</monolog:url>
                </monolog:excluded-http-code>
                <monolog:excluded-http-code code="404"/>
            </monolog:handler>
        </monolog:config>
    </container>
    
  • PHP
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    // config/packages/prod/monolog.php
    $container->loadFromExtension('monolog', [
        'handlers' => [
            'main' => [
                // ...
                'type'                => 'fingers_crossed',
                'handler'             => ...,
                'excluded_http_codes' => [403, 404],
            ],
        ],
    ]);
    

Caution

Combining excluded_http_codes with a passthru_level lower than error (i.e. debug, info, notice or warning) will not actually exclude log messages for those HTTP codes because they are logged with level of error or higher and passthru_level takes precedence over the HTTP codes being listed in excluded_http_codes.

This work, including the code samples, is licensed under a Creative Commons BY-SA 3.0 license.