Skip to main content

Logging in JSON the easy way!

Project description

Noodle Logging - The tiny JSON logger for Python 3.x

Noodle Logging is a tiny package aimed at making logging from python applications into JSON easier.

Dependencies

  1. structlog
  2. python-json-logger
  3. six

Installation

pip3 install noodle-logging

Usage Examples

1. Basic logging
from noodle_logging.logger import log

def test():
    log.info("event", some_parameter=12, some_other_parameter="hello")

if __name__ == "__main__":
    test()
Output
{"message": "event", "some_parameter": 12, "some_other_parameter": "hello", "logger": "__main__", "level": "info", "timestamp": "2019-05-28T11:59:14.975823Z"}
2. High level Profiling - Using decorators
import time

from noodle_logging.decorators import profile

@profile
def some_method(*args, **kwargs):
    time.sleep(1)
    print(some_method.__name__, "method in execution with args ", args,
          " and kwargs ", kwargs)
    time.sleep(1)

if __name__ == "__main__":
    some_method(1, 2, 3, a=2, b=3)
Output
{"message": "Function Profiler", "fn_name": "some_method", "fn_id": "2df1335aa93f41438412da6b517a6781", "timestamp_start": 1559044955.3319192, "fn_args": "1,2,3", "fn_kwargs": "{\"a\": 2, \"b\": 3}", "logger": "noodle_logging.decorators", "level": "info", "timestamp": "2019-05-28T12:02:35.332396Z"}
>>> some_method method in execution with args  (1, 2, 3)  and kwargs  {'a': 2, 'b': 3}
{"message": "Function Profiler", "fn_name": "some_method", "fn_id": "2df1335aa93f41438412da6b517a6781", "timestamp_start": 1559044955.3319192, "fn_args": "1,2,3", "fn_kwargs": "{\"a\": 2, \"b\": 3}", "timestamp_end": 1559044957.340735, "exec_time": 2.0088157653808594, "logger": "noodle_logging.decorators", "level": "info", "timestamp": "2019-05-28T12:02:37.340991Z"}
3. Catching (and Logging) an exception - Using decorators
from noodle_logging.decorators import log_exceptions

@log_exceptions
def some_other_method(*args, **kwargs):
    print(some_other_method.__name__, "method in execution with args ",
          args, " and kwargs ", kwargs)
    print(1 / 0)
    # Below line will not be executed.
    print("Execution completed", some_other_method.__name__)

if __name__ == "__main__":
    some_other_method(1, 2, 3, a=2, b=3, c=4)
Output
some_other_method method in execution with args  (1, 2, 3)  and kwargs  {'a': 2, 'b': 3, 'c': 4}
{"message": "Exception Found.", "exception": "Traceback (most recent call last):\n  File \"/Users/askar.ali/Desktop/noodle-logging-original/noodle_logging/decorators.py\", line 48, in wrapper\n    return func(*args, **kwargs)\n  File \"run.py\", line 29, in some_other_method\n    print(1/0)\nZeroDivisionError: division by zero", "fn_args": "1,2,3", "fn_kwargs": "{\"a\": 2, \"b\": 3, \"c\": 4}", "logger": "noodle_logging.decorators", "level": "error", "timestamp": "2019-05-28T12:06:10.188581Z"}
Traceback (most recent call last):
  File "run.py", line 49, in <module>
    some_other_method(1, 2, 3, a=2, b=3, c=4)
  File "/Users/askar.ali/Desktop/noodle-logging-original/noodle_logging/decorators.py", line 48, in wrapper
    return func(*args, **kwargs)
  File "run.py", line 29, in some_other_method
    print(1/0)
ZeroDivisionError: division by zero
4. Profiling + Catching (and Logging) exceptions - Using decorators
from noodle_logging.decorators import profile, log_exceptions

@profile
@log_exceptions
def noodling_around(*args, **kwargs):
    print(noodling_around.__name__, "method in execution with args ",
          args, " and kwargs ", kwargs)
    print(1 / 0)
    # This line will not be executed.
    print("Execution completed", noodling_around.__name__)

if __name__ == "__main__":
    noodling_around(1, 2, 3, a=2, b=3, c=4)
Output
{"message": "Function Profiler", "fn_name": "noodling_around", "fn_id": "9a3e74924b77440c9a5f1fe4c05522e6", "timestamp_start": 1559045360.7205062, "fn_args": "1,2,3", "fn_kwargs": "{\"a\": 2, \"b\": 3, \"c\": 4}", "logger": "noodle_logging.decorators", "level": "info", "timestamp": "2019-05-28T12:09:20.720621Z"}
noodling_around method in execution with args  (1, 2, 3)  and kwargs  {'a': 2, 'b': 3, 'c': 4}
{"message": "Exception Found.", "exception": "Traceback (most recent call last):\n  File \"/Users/askar.ali/Desktop/noodle-logging-original/noodle_logging/decorators.py\", line 48, in wrapper\n    return func(*args, **kwargs)\n  File \"run.py\", line 41, in noodling_around\n    print(1 / 0)\nZeroDivisionError: division by zero", "fn_args": "1,2,3", "fn_kwargs": "{\"a\": 2, \"b\": 3, \"c\": 4}", "logger": "noodle_logging.decorators", "level": "error", "timestamp": "2019-05-28T12:09:20.721559Z"}
Traceback (most recent call last):
  File "run.py", line 50, in <module>
    noodling_around(1, 2, 3, a=2, b=3, c=4)
  File "/Users/askar.ali/Desktop/noodle-logging-original/noodle_logging/decorators.py", line 26, in wrapper
    result = func(*args, **kwargs)
  File "/Users/askar.ali/Desktop/noodle-logging-original/noodle_logging/decorators.py", line 48, in wrapper
    return func(*args, **kwargs)
  File "run.py", line 41, in noodling_around
    print(1 / 0)
ZeroDivisionError: division by zero

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

noodle-logging-0.3.tar.gz (3.7 kB view details)

Uploaded Source

Built Distribution

noodle_logging-0.3-py2-none-any.whl (5.2 kB view details)

Uploaded Python 2

File details

Details for the file noodle-logging-0.3.tar.gz.

File metadata

  • Download URL: noodle-logging-0.3.tar.gz
  • Upload date:
  • Size: 3.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for noodle-logging-0.3.tar.gz
Algorithm Hash digest
SHA256 eefb23460754507a791f45eecbd498946f059aef2495021776a8eb93bdf3c9b3
MD5 cdc9a04733d360ce592d2eefe50d02a8
BLAKE2b-256 f7bf0ddf85f4da511971d125a59417e72faacb0c3419042845ef4c26746f11fc

See more details on using hashes here.

File details

Details for the file noodle_logging-0.3-py2-none-any.whl.

File metadata

  • Download URL: noodle_logging-0.3-py2-none-any.whl
  • Upload date:
  • Size: 5.2 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for noodle_logging-0.3-py2-none-any.whl
Algorithm Hash digest
SHA256 19d71e549d857109e048ccc229ab99713199d1c732cca37b02588c1852d62b9e
MD5 7fc641d25a8710a990797e517e94c318
BLAKE2b-256 ec9178fc4b801011309fd939e1a2c2e3cb9b38b5c5baf5252bae6cade0749a6a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page