Python CloudWatch Logging: Log Analytics and Application Intelligence
Avoid crashing flush() when CreateLogStream API call is throttled (#192)
Truncate messages based on bytes, not unicode characters (#181)
null
. The new behavior is to
use the output of repr() to represent these non-JSON-serializable
objects. This change may cause your logger to log more data than you
intended, which is why it triggers a major version bump. If you use
watchtower to log sensitive information or objects with large repr
strings, you are advised to examine your log messages to see if any
newly visible data should be sanitized. If you need to customize
this behavior, you can pass a custom JSON default serializer using
the json_serialize_default
keyword argument.Deconflict log streams from process pools in default log stream name
Rename log_group to log_group_name for consistency with the Boto3 API
Rename stream_name to log_stream_name for consistency with the Boto3 API
Introduce the ability to pass a Boto3 logs client and remove the ability to pass Boto3 sessions
Document the ability to pass a Boto3 configuration profile name for declarative configs
Remove the Django customization, which was deprecated and unneeded. Django can use watchtower directly via its logging configuration as documented in the readme
Introduce configurable log formatters. Special thanks to @terencehonles for starting this work (#117, #138)
Use logging.Handler.handleError to correctly handle errors while processing log records (#149)
Move stream name determining logic to separate method (#148)
Reset internal state on fork to prevent deadlocks in worker threads (#139)
Drop Python 3.5 support
Expand documentation
Update test and release infrastructure