A decorator to unify logging, metrics and notifications.
Project description
Observe
@observe is a decorator for Python methods, which allows Python developers to collect all basic metrics about the decorated method, generate unified logs and notifications on failure which are easy to trace.
Installation
pip install atl-observe
Usage
Decorating the process method and assigning a metic name and static_tags, all tags are added to all metrics generated, used to filter on your dashboards.
from atl_observe import observe
class Engine:
@observe(metric="process",
static_tags=["layer:process"])
def process(self, message: dict):
pass
Decorating the process method and assigning a metric and trace_id_from, the trace_id will now appear in all logs and notifications, used to search your logs.
from atl_observe import observe
class Engine:
@observe(metric="process",
trace_id_from={"message": "eventId"})
def process(self, message: dict):
pass
Logs, Metrics and Notifications
All logs, metrics and notifications are divided into three categories:
- Default: no exceptions were raised.
- Expected: an expected Exception was raised.
- Unexpected Exceptions: an unexpected / unhandled Exception was raised
Default
# optional: debug logs
logger.debug("... start.")
logger.debug("... finished.")
# increments
statsd.increment("%s.start" % metric, 1, tags=all_tags)
statsd.increment("%s.finished" % metric, 1, tags=all_tags)
# timing
statsd.timing("%s.time.finished" % metric, dt, tags=all_tags)
Expected
Expected exceptions are managed via accept_on and decline_on lists. If the raised exception is part of accept_on, the decorator will return a Truthy value, if the exception is part of decline_on a Falsy value is returned.
# warning logs
logger.warning("... accepted.")
logger.warning("... declined.")
# increments
statsd.increment('%s.exception.accepted' % metric, tags=all_tags)
statsd.increment('%s.exception.declined' % metric, tags=all_tags)
# timing
statsd.timing("%s.time.accepted" % metric, dt, tags=all_tags)
statsd.timing("%s.time.declined" % metric, dt, tags=all_tags)
Unexpected
# error logs
logger.error("... raised.")
# slack
slack.error("... raised.")
# increments
statsd.increment('%s.exception.raised' % metric, tags=all_tags)
# timing
statsd.timing("%s.time.raised" % metric, dt, tags=all_tags)
Documentation
make installwill install all required packagesmake formatwill auto format the projectmake lintwill run the lintermake testswill run all unit tests
Contributions
Contributions to @observe are welcome! Please see CONTRIBUTING.md for details.
License
Copyright (c) [2020] Atlassian and others. Apache 2.0 licensed, see LICENSE file.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file atl-observe-1.1.0.tar.gz.
File metadata
- Download URL: atl-observe-1.1.0.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.10.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
59a71c1bb8a1137a179a883afb3dff4d6721b4957883948acb47044df69b4103
|
|
| MD5 |
7388bd29b84fdd381dbe992d724cc0f6
|
|
| BLAKE2b-256 |
ad13fd1424a5405f3b66040ac3cb0e174d9bf5d21854db9cb47fcbb02dabb763
|
File details
Details for the file atl_observe-1.1.0-py2.py3-none-any.whl.
File metadata
- Download URL: atl_observe-1.1.0-py2.py3-none-any.whl
- Upload date:
- Size: 13.5 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.10.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75b738df0f945df1208c67b839ce104863a9d992005b4e27813270e1c0b3e188
|
|
| MD5 |
937e5405595736738af73e23c7699dbf
|
|
| BLAKE2b-256 |
afff313798d4ec81a9f44298198c0d9418db42764bfea5e2703c79665fd60db9
|