Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I work in a legacy codebase that doesn't use
report(), so we have a lot of this:After 6 months, I finally realized that it's not rendering public properties that I have been adding to my enriched exceptions. 🤦 It turns out that this has to do with Monolog's NormalizerFormatter which determines the shape of the array that's written to the structured log.
It would be swell if Laravel offered an easy way to always include
context()inside of a log, whether it was written to logs viareport()or if the exception was written as a structured log.Perhaps the bigger benefit is the
previousexception will also have its enriched context included when written to the logs.How to use
Update your
config/logging.phpto use'formatter' => Illuminate\Log\Formatters\JsonFormatter'instead ofMonolog\Formatter\JsonFormatterOutput
All tests build an exception like this:
report()Using this code
we get these logs:
Using
LogUsing this code:
This shows the before and after using this PR's
JsonFormatter.