Connect tracer with external application's logging facilities #150
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.
This PR adds logging functionality that allows the tracer library to emit log messages using the application's logger.
When initializing the tracer, the application provides a log function that is used as a bridge between the library and application. Then if the tracer needs to write a log message, it calls the application-provided log function with a log level and message.
This also improves the startup logging, so instead of writing to a file, it is written to the application's logs.
There's two sets of methods to use when logging something.
Log
should be used for actionable information.Trace
should be used for detailing the call flow and internal decision-making.The logger is instantiated as either a
StandardLogger
orVerboseLogger
. TheStandardLogger
provides an empty implementation for theTrace
methods, which means there's no significant overhead to calling them - it becomes almost a no-op.The
DD_TRACE_DEBUG
environment variable needs to be set totrue
to use the VerboseLogger and have the performance impact of the detailed logging.There are still occasions where
stderr
is used, and places whereTrace
could be used, and this will be covered in future PRs.