Symfony 6 Certification New exam with updated questions 100% online Show your expertise

New in Symfony 5.4: Configurable Exceptions

Symfony 5.4 is backed by Private Packagist. Private Packagist is a fast, reliable, and secure Composer repository for your private packages. It mirrors all your open-source dependencies for better availability and monitors them for security vulnerabilities.

Contributed by
Grégoire Pineau
in #42244.

In Symfony applications, logging is available either via Symfony's built-in logger and or via the Monolog logger and its tight integration with Symfony. When using Monolog you can access to features such as excluding certain HTTP codes from logs and logging messages to different files.

In Symfony 5.4 we've improved the logger with a new feature to make exceptions configurable per class. Using the new framework.exceptions option you can now define the log level and the HTTP status of the exceptions associated to a certain class:

# config/packages/framework.yaml
            log_level: debug
            status_code: 422
            log_level: alert
            status_code: 503

Although this example uses the YAML config format, this feature is also available when using XML or PHP as the config format.

Help the Symfony project!

As with any Open-Source project, contributing code or documentation is the most common way to help, but we also have a wide range of sponsoring opportunities.


Could you add XML and PHP examples for the sake of completeness?
@Christian you can see XML and PHP examples as part of the tests of the Pull Request related to this feature. Click on the "#42244" number below Grégoire's name.
So in the example, an uncaught "SomeException" triggered from a request would respond with a 503? Is there any way to set the response body for these exceptions?

For example, I throw a "FrontendException" for errors that should be reported in an API response. I have an onKernelException listener that will translate those exception messages set the response to that message with some additional info, with status code 400.

Is there any way to replicate that sort of behavior with this system?
I hope this comment inspires someone to add `log_channel` directive as well :}

Comments are closed.

To ensure that comments stay relevant, they are closed for old posts.