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:
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'] }]
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>
1 2 3 4 5 6 7 8 9 10 11 12 13
// config/packages/prod/monolog.php
use Symfony\Config\MonologConfig;
return static function (MonologConfig $monolog): void {
$mainHandler = $monolog->handler('main')
// ...
->type('fingers_crossed')
->handler('...')
;
$mainHandler->excludedHttpCode()->code(403);
$mainHandler->excludedHttpCode()->code(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.