I have used the following configuration for my production logging:
monolog:
handlers:
mail:
type: fingers_crossed
action_level: error
handler: grouped
grouped:
type: group
members: [streamed, buffered]
streamed:
type: stream
path: %kernel.logs_dir%/%kernel.environment%.log
level: debug
# buffered is used to accumulate errors and send them as batch to the email address
buffered:
type: buffer
handler: swift
swift:
type: swift_mailer
from_email: info@....com
to_email: info@....com
subject: Error Occurred!
level: debug
This sends emails like this:
[2012-03-21 21:24:09] security.DEBUG: Read SecurityContext from the
session [] [][2012-03-21 21:24:09] security.DEBUG: Reloading user from user
provider. [] [][2012-03-21 21:24:09] security.DEBUG: Username "jakob.asdf" was
reloaded from user provider. [] [] [2012-03-21 21:24:09]
request.INFO: Matched route "_user_settings" (parameters:
"_controller": "…Bundle\Controller\UserController::settingsAction",
"username": "Jakob.asdf", "_route": "_user_settings") [] [][2012-03-21 21:24:09] request.ERROR:
Symfony\Component\HttpKernel\Exception\NotFoundHttpException:
…Bundle\Entity\User object not found. (uncaught exception) at
/var/www/…/vendor/bundles/Sensio/Bundle/FrameworkExtraBundle/Request/ParamConverter/DoctrineParamConverter.php
line 50 [] [][2012-03-21 21:24:09] security.DEBUG: Write SecurityContext in the
session [] []
I would really love to have a stack trace here, or at least the line number in my controller which triggered the error. Otherwise it's really a lot of guessing of what could have gone wrong.
Now, the question: Is there any way to achieve such an even more verbose logging?
Best Answer
Yes it can be achievable.
Create a
ExceptionListener
class.And then register listener.
You can tweak it as your requirement.