tiny-json-log


Nametiny-json-log JSON
Version 0.1.0 PyPI version JSON
download
home_pagehttps://github.com/ggramal/tiny-json-log
SummaryCompact/easy to use json formatter
upload_time2024-08-23 14:40:48
maintainerNone
docs_urlNone
authorgramal
requires_python>=3.8
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # tiny-json-log

Compact and easy to use json logging lib

## Usage

To write logs in json simply pass an instance of `JSONFormatter` class to your handler


```
import logging
from tiny_json_log import JSONFormatter

#You can use any other handler 
#for example FileHandler
handler = logging.StreamHandler()
handler.setFormatter(JSONFormatter())

#Here we use root logger but
#you can use any logger you wish
root = logging.getLogger()
root.addHandler(handler)
root.setLevel("INFO")

root.info("informative message")
```

this will print to stderr

```
{"severity": "INFO", "logger": "root", "message": "informative message"}

```

## Json message

If your message string is in json format, library will convert it to json and nest it under `message` key

```
import logging
import json
import uuid
from tiny_json_log import JSONFormatter

log_dict = {
    "src": "module.some_class",
    "userid": f"{uuid.uuid4()}",
    "nested": {
        "some_nested_attr": 123
    }
}

handler = logging.StreamHandler()
handler.setFormatter(JSONFormatter())
root = logging.getLogger()
root.addHandler(handler)
root.setLevel("DEBUG")

root.info(json.dumps(log_dict))
```

this will print to stderr something like

```
{"severity": "INFO", "logger": "root", "message": {"src": "module.some_class", "userid": "32b8bf63-3958-4caa-b566-a500c898e429", "nested": {"some_nested_attr": 123}}}
```

you can also pass `merge_message=True` to `JSONFormatter` constructor and it will merge you JSON message with other logRecord attributes

```
import logging
import json
import uuid
from tiny_json_log import JSONFormatter

log_dict = {
    "src": "module.some_class",
    "userid": f"{uuid.uuid4()}",
    "nested": {
        "some_nested_attr": 123
    }
}

handler = logging.StreamHandler()
handler.setFormatter(JSONFormatter(merge_message=True))
root = logging.getLogger()
root.addHandler(handler)
root.setLevel("DEBUG")

root.info(json.dumps(log_dict))
```

will print

```
{"severity": "INFO", "logger": "root", "src": "module.some_class", "userid": "f10a8b6a-86c1-4280-8685-421ceea58811", "nested": {"some_nested_attr": 123}}
```

## Formatting 

You can also pass a format string to control what [logRecord attributes](https://docs.python.org/3/library/logging.html#logrecord-attributes) are printed. Format string is a space separated list of logRecord attrs enclosed in `{}`. For example 


```
import logging
from tiny_json_log import JSONFormatter


fmt = "{levelname} {message} {name}" 

handler = logging.StreamHandler()
handler.setFormatter(JSONFormatter(fmt))

root = logging.getLogger()
root.addHandler(handler)
root.setLevel("DEBUG")

root.error("informative message")
```

this will print to stderr

```
{"levelname": "ERROR", "message": "informative message", "name": "root"}
```

By default log key names are equal to logRecord attribute names. You can change this behaviour by specifing `<custom attr key>={<some logRecord attr>}` for example

```
import logging
import sys
from tiny_json_log import JSONFormatter


fmt = "lvl={levelname} {message} logger={name}"

handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(JSONFormatter(fmt))

root = logging.getLogger()
root.addHandler(handler)
root.setLevel("DEBUG")

root.info("informative message")
```

this will print to stdout

```
{"lvl": "INFO", "message": "informative message", "logger": "root"}
```

**Default format string is** `severity={levelname} logger={name} {message}`

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/ggramal/tiny-json-log",
    "name": "tiny-json-log",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": null,
    "author": "gramal",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/7a/27/b2312c97b7f2fb1314f6bc6b0f39b8283d209b3cf5650eb9f4c5d192c8c9/tiny_json_log-0.1.0.tar.gz",
    "platform": null,
    "description": "# tiny-json-log\n\nCompact and easy to use json logging lib\n\n## Usage\n\nTo write logs in json simply pass an instance of `JSONFormatter` class to your handler\n\n\n```\nimport logging\nfrom tiny_json_log import JSONFormatter\n\n#You can use any other handler \n#for example FileHandler\nhandler = logging.StreamHandler()\nhandler.setFormatter(JSONFormatter())\n\n#Here we use root logger but\n#you can use any logger you wish\nroot = logging.getLogger()\nroot.addHandler(handler)\nroot.setLevel(\"INFO\")\n\nroot.info(\"informative message\")\n```\n\nthis will print to stderr\n\n```\n{\"severity\": \"INFO\", \"logger\": \"root\", \"message\": \"informative message\"}\n\n```\n\n## Json message\n\nIf your message string is in json format, library will convert it to json and nest it under `message` key\n\n```\nimport logging\nimport json\nimport uuid\nfrom tiny_json_log import JSONFormatter\n\nlog_dict = {\n    \"src\": \"module.some_class\",\n    \"userid\": f\"{uuid.uuid4()}\",\n    \"nested\": {\n        \"some_nested_attr\": 123\n    }\n}\n\nhandler = logging.StreamHandler()\nhandler.setFormatter(JSONFormatter())\nroot = logging.getLogger()\nroot.addHandler(handler)\nroot.setLevel(\"DEBUG\")\n\nroot.info(json.dumps(log_dict))\n```\n\nthis will print to stderr something like\n\n```\n{\"severity\": \"INFO\", \"logger\": \"root\", \"message\": {\"src\": \"module.some_class\", \"userid\": \"32b8bf63-3958-4caa-b566-a500c898e429\", \"nested\": {\"some_nested_attr\": 123}}}\n```\n\nyou can also pass `merge_message=True` to `JSONFormatter` constructor and it will merge you JSON message with other logRecord attributes\n\n```\nimport logging\nimport json\nimport uuid\nfrom tiny_json_log import JSONFormatter\n\nlog_dict = {\n    \"src\": \"module.some_class\",\n    \"userid\": f\"{uuid.uuid4()}\",\n    \"nested\": {\n        \"some_nested_attr\": 123\n    }\n}\n\nhandler = logging.StreamHandler()\nhandler.setFormatter(JSONFormatter(merge_message=True))\nroot = logging.getLogger()\nroot.addHandler(handler)\nroot.setLevel(\"DEBUG\")\n\nroot.info(json.dumps(log_dict))\n```\n\nwill print\n\n```\n{\"severity\": \"INFO\", \"logger\": \"root\", \"src\": \"module.some_class\", \"userid\": \"f10a8b6a-86c1-4280-8685-421ceea58811\", \"nested\": {\"some_nested_attr\": 123}}\n```\n\n## Formatting \n\nYou can also pass a format string to control what [logRecord attributes](https://docs.python.org/3/library/logging.html#logrecord-attributes) are printed. Format string is a space separated list of logRecord attrs enclosed in `{}`. For example \n\n\n```\nimport logging\nfrom tiny_json_log import JSONFormatter\n\n\nfmt = \"{levelname} {message} {name}\" \n\nhandler = logging.StreamHandler()\nhandler.setFormatter(JSONFormatter(fmt))\n\nroot = logging.getLogger()\nroot.addHandler(handler)\nroot.setLevel(\"DEBUG\")\n\nroot.error(\"informative message\")\n```\n\nthis will print to stderr\n\n```\n{\"levelname\": \"ERROR\", \"message\": \"informative message\", \"name\": \"root\"}\n```\n\nBy default log key names are equal to logRecord attribute names. You can change this behaviour by specifing `<custom attr key>={<some logRecord attr>}` for example\n\n```\nimport logging\nimport sys\nfrom tiny_json_log import JSONFormatter\n\n\nfmt = \"lvl={levelname} {message} logger={name}\"\n\nhandler = logging.StreamHandler(sys.stdout)\nhandler.setFormatter(JSONFormatter(fmt))\n\nroot = logging.getLogger()\nroot.addHandler(handler)\nroot.setLevel(\"DEBUG\")\n\nroot.info(\"informative message\")\n```\n\nthis will print to stdout\n\n```\n{\"lvl\": \"INFO\", \"message\": \"informative message\", \"logger\": \"root\"}\n```\n\n**Default format string is** `severity={levelname} logger={name} {message}`\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Compact/easy to use json formatter",
    "version": "0.1.0",
    "project_urls": {
        "Homepage": "https://github.com/ggramal/tiny-json-log",
        "Repository": "https://github.com/ggramal/tiny-json-log"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7514dae80f8f66c011e32d869203d9a8a87016e2ccab1271ed41cb39e7078694",
                "md5": "e18cfd05f4d81c95b3762d9cf7ec8403",
                "sha256": "fe1a4e9b56d83c14b45ba0ae18bdd811b202de91cf7c388fc777d9aad6bbde46"
            },
            "downloads": -1,
            "filename": "tiny_json_log-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "e18cfd05f4d81c95b3762d9cf7ec8403",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 4619,
            "upload_time": "2024-08-23T14:40:47",
            "upload_time_iso_8601": "2024-08-23T14:40:47.194302Z",
            "url": "https://files.pythonhosted.org/packages/75/14/dae80f8f66c011e32d869203d9a8a87016e2ccab1271ed41cb39e7078694/tiny_json_log-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7a27b2312c97b7f2fb1314f6bc6b0f39b8283d209b3cf5650eb9f4c5d192c8c9",
                "md5": "55307c8513324b0c4d06a6542e797bfc",
                "sha256": "c3cf1ae8ab119461cd4db801d7c8957707b1a0e51845cc1c74f1a48224550314"
            },
            "downloads": -1,
            "filename": "tiny_json_log-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "55307c8513324b0c4d06a6542e797bfc",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 4166,
            "upload_time": "2024-08-23T14:40:48",
            "upload_time_iso_8601": "2024-08-23T14:40:48.707772Z",
            "url": "https://files.pythonhosted.org/packages/7a/27/b2312c97b7f2fb1314f6bc6b0f39b8283d209b3cf5650eb9f4c5d192c8c9/tiny_json_log-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-08-23 14:40:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ggramal",
    "github_project": "tiny-json-log",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "tiny-json-log"
}
        
Elapsed time: 0.93148s