Kislyuk Watchtower Versions Save

Python CloudWatch Logging: Log Analytics and Application Intelligence

v3.2.0

1 month ago
  • Use timeout when waiting for queues to empty at shutdown

v3.1.0

2 months ago
  • Avoid crashing flush() when CreateLogStream API call is throttled (#192)

    • Replace deprecated function datatime.utcnow() (#196)

v3.0.1

1 year ago
  • Truncate messages based on bytes, not unicode characters (#181)

    • Test suite improvements (#180, #182)

v3.0.0

2 years ago
  • Use repr to represent all JSON fields of unknown types by default. Previously, when passing a mapping (dictionary) as a log message, watchtower would replace datetime objects with their ".isoformat()" string representation, and would replace all other non-JSON-serializable objects with 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.

v2.1.1

2 years ago
  • Use correct default log stream name

v2.1.0

2 years ago
  • Deconflict log streams from process pools in default log stream name

    • Documentation and CI improvements

v2.0.1

2 years ago
  • Update empty message filtering to catch formatted string case (#162)

v2.0.0

2 years ago
  • 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

v1.0.6

3 years ago
  • Catch OperationAbortedException in _idempotent_create. Fixes #136

v1.0.5

3 years ago
  • Don't crash if nextSequenceToken is missing. Fixes #134