smoloki


Namesmoloki JSON
Version 0.0.17 PyPI version JSON
download
home_pagehttps://github.com/michaelkryukov/smoloki
SummaryTiny library to push logs to `Grafana Loki` in `logfmt` format.
upload_time2024-03-11 13:44:55
maintainer
docs_urlNone
authorMichael Krukov
requires_python>=3.7
license
keywords library loki
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # smoloki

[![PyPI version](https://badge.fury.io/py/smoloki.svg)](https://badge.fury.io/py/smoloki)
[![npm version](https://badge.fury.io/js/smoloki.svg)](https://badge.fury.io/js/smoloki)

Tiny library to push logs to `Grafana Loki` in `logfmt` format.

## CLI

```text
usage: smoloki [-h] [-b BASE_ENDPOINT] [-H HEADERS] labels information

cli for pushing to loki

positional arguments:
  labels            json-encoded string with labels
  information       json-encoded string with information

optional arguments:
  -h, --help        show this help message and exit
  -b BASE_ENDPOINT  base address of loki server
  -H HEADERS        json-encoded string with headers for request to loki server
```

## Usage in Python

```py
import smoloki


async def as_request_completed():
    await smoloki.push(
        {'service': 'web'},
        {'level': 'info', 'event': 'request_completed'},
    )


def as_request_completed():
    smoloki.push_sync(
        {'service': 'web'},
        {'level': 'info', 'event': 'request_completed'},
    )
```

## Usage in NodeJS

```js
const smoloki = require('smoloki');

async function as_request_completed() {
    await smoloki.push({ service: 'web' }, { level: 'info', event: 'request_completed' });
}
```

## Implementation details

- Calls to `push` method will never throw. Any exception will just be
    logged using `logging`.
- Keys in labels and information must be strings. If `None` is provided as
    value in case of python, it will be serialized as empty string.
- Values in labels and information must be string, integers or floats.
- If no `base_endpoint` provided (using parameter or env), nothing will happen.

## Configuration

- `SMOLOKI_BASE_ENDPOINT` – base address of loki server.
- `SMOLOKI_HEADERS` - headers for request to loki server (can be used for authorization).
- `SMOLOKI_BASE_LABELS` - base labels that will be added to logs.
- `SMOLOKI_BASE_INFORMATION` - base information that will be added to logs.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/michaelkryukov/smoloki",
    "name": "smoloki",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "",
    "keywords": "library,loki",
    "author": "Michael Krukov",
    "author_email": "krukov.michael@ya.ru",
    "download_url": "https://files.pythonhosted.org/packages/36/1b/5dca9a7582a8f8c2362b8250552d6531b0ed6abea37b47730be305cbc286/smoloki-0.0.17.tar.gz",
    "platform": null,
    "description": "# smoloki\n\n[![PyPI version](https://badge.fury.io/py/smoloki.svg)](https://badge.fury.io/py/smoloki)\n[![npm version](https://badge.fury.io/js/smoloki.svg)](https://badge.fury.io/js/smoloki)\n\nTiny library to push logs to `Grafana Loki` in `logfmt` format.\n\n## CLI\n\n```text\nusage: smoloki [-h] [-b BASE_ENDPOINT] [-H HEADERS] labels information\n\ncli for pushing to loki\n\npositional arguments:\n  labels            json-encoded string with labels\n  information       json-encoded string with information\n\noptional arguments:\n  -h, --help        show this help message and exit\n  -b BASE_ENDPOINT  base address of loki server\n  -H HEADERS        json-encoded string with headers for request to loki server\n```\n\n## Usage in Python\n\n```py\nimport smoloki\n\n\nasync def as_request_completed():\n    await smoloki.push(\n        {'service': 'web'},\n        {'level': 'info', 'event': 'request_completed'},\n    )\n\n\ndef as_request_completed():\n    smoloki.push_sync(\n        {'service': 'web'},\n        {'level': 'info', 'event': 'request_completed'},\n    )\n```\n\n## Usage in NodeJS\n\n```js\nconst smoloki = require('smoloki');\n\nasync function as_request_completed() {\n    await smoloki.push({ service: 'web' }, { level: 'info', event: 'request_completed' });\n}\n```\n\n## Implementation details\n\n- Calls to `push` method will never throw. Any exception will just be\n    logged using `logging`.\n- Keys in labels and information must be strings. If `None` is provided as\n    value in case of python, it will be serialized as empty string.\n- Values in labels and information must be string, integers or floats.\n- If no `base_endpoint` provided (using parameter or env), nothing will happen.\n\n## Configuration\n\n- `SMOLOKI_BASE_ENDPOINT` \u2013 base address of loki server.\n- `SMOLOKI_HEADERS` - headers for request to loki server (can be used for authorization).\n- `SMOLOKI_BASE_LABELS` - base labels that will be added to logs.\n- `SMOLOKI_BASE_INFORMATION` - base information that will be added to logs.\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Tiny library to push logs to `Grafana Loki` in `logfmt` format.",
    "version": "0.0.17",
    "project_urls": {
        "Homepage": "https://github.com/michaelkryukov/smoloki"
    },
    "split_keywords": [
        "library",
        "loki"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2b3aa26ee8e64edd2e6a0d3ca3ade1c302106bfa4235ae05d52f53b8b793c3de",
                "md5": "9b742f6823832973fbefce18525278ab",
                "sha256": "080f00a8f3f32c46bd40e4b5d7bef2c269d34d12bd3f9f50b340f7e0cd1ee23b"
            },
            "downloads": -1,
            "filename": "smoloki-0.0.17-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9b742f6823832973fbefce18525278ab",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 4504,
            "upload_time": "2024-03-11T13:44:53",
            "upload_time_iso_8601": "2024-03-11T13:44:53.565868Z",
            "url": "https://files.pythonhosted.org/packages/2b/3a/a26ee8e64edd2e6a0d3ca3ade1c302106bfa4235ae05d52f53b8b793c3de/smoloki-0.0.17-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "361b5dca9a7582a8f8c2362b8250552d6531b0ed6abea37b47730be305cbc286",
                "md5": "8fe62bbd8fd6573564e6bf2f41c18fa0",
                "sha256": "9199f4558235e8434a33b8a7d3a15bd13fc060a3df28bc1bcc33fbd56a8eea12"
            },
            "downloads": -1,
            "filename": "smoloki-0.0.17.tar.gz",
            "has_sig": false,
            "md5_digest": "8fe62bbd8fd6573564e6bf2f41c18fa0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 4690,
            "upload_time": "2024-03-11T13:44:55",
            "upload_time_iso_8601": "2024-03-11T13:44:55.255709Z",
            "url": "https://files.pythonhosted.org/packages/36/1b/5dca9a7582a8f8c2362b8250552d6531b0ed6abea37b47730be305cbc286/smoloki-0.0.17.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-11 13:44:55",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "michaelkryukov",
    "github_project": "smoloki",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "smoloki"
}
        
Elapsed time: 0.19875s