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:
1 2 3 4 5 6 7 8 9
# config/packages/framework.yaml
framework:
exceptions:
Symfony\Component\HttpKernel\Exception\BadRequestHttpException:
log_level: debug
status_code: 422
App\Something\Exception\SomeException:
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.
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 :}