# Loki Logger
Python библиотека для отправки логов в Grafana Loki с поддержкой батчинга и автоматического определения вызывающей функции.
## Установка
```bash
pip install log-to-loki
```
## Быстрый старт
```python
from log_to_loki import LokiLogger
# Создание логгера
logger = LokiLogger(
name='my-app',
loki_url='http://localhost:3100',
username='admin',
password='admin',
labels={'environment': 'production'}
)
# Использование
logger.info("Приложение запущено")
logger.error("Произошла ошибка")
```
## Возможности
✅ Батчинг логов для производительности
✅ Автоматическое определение вызывающей функции
✅ Поддержка консольного вывода
✅ Настраиваемые метки (labels)
✅ Многопоточная отправка логов
✅ Переиспользование HTTP соединений
Raw data
{
"_id": null,
"home_page": "https://github.com/yyunoshev/log-to-loki",
"name": "log-to-loki",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "logging, loki, grafana, observability, monitoring",
"author": "Yunoshev Yaroslav",
"author_email": "Yunoshev Yaroslav <yunoshev.dev@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/dd/33/27d331dd2e31595f2d6469bee8d0c13ed5cd7ac7e7ee33163400af8967a5/log_to_loki-0.1.0.tar.gz",
"platform": null,
"description": "# Loki Logger\n\nPython \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043b\u043e\u0433\u043e\u0432 \u0432 Grafana Loki \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0431\u0430\u0442\u0447\u0438\u043d\u0433\u0430 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.\n\n## \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\n\n```bash\npip install log-to-loki\n```\n\n## \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442\n\n```python\nfrom log_to_loki import LokiLogger\n\n# \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043b\u043e\u0433\u0433\u0435\u0440\u0430\nlogger = LokiLogger(\n name='my-app',\n loki_url='http://localhost:3100',\n username='admin',\n password='admin',\n labels={'environment': 'production'}\n)\n\n# \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\nlogger.info(\"\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e\")\nlogger.error(\"\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430\")\n```\n\n\n## \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438\n\u2705 \u0411\u0430\u0442\u0447\u0438\u043d\u0433 \u043b\u043e\u0433\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438\n\u2705 \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\n\u2705 \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430\n\u2705 \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043c\u0435\u0442\u043a\u0438 (labels)\n\u2705 \u041c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u0430\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043b\u043e\u0433\u043e\u0432\n\u2705 \u041f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 HTTP \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python library for sending logs to Grafana Loki with batching support",
"version": "0.1.0",
"project_urls": {
"Bug Tracker": "https://github.com/yyunoshev/log-to-loki/issues",
"Documentation": "https://github.com/yyunoshev/log-to-loki#readme",
"Homepage": "https://github.com/yyunoshev/log-to-loki",
"Source Code": "https://github.com/yyunoshev/log-to-loki"
},
"split_keywords": [
"logging",
" loki",
" grafana",
" observability",
" monitoring"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c28c3d67947f5413e2321508f80b90e2f353e4496b881d3931b790091156f61d",
"md5": "cc7b5071b554d6cd97a7639cb0e8ce33",
"sha256": "9ecf3c49cb8667bfaaee48b691000b8a34db30856628d23520410db0af023e95"
},
"downloads": -1,
"filename": "log_to_loki-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "cc7b5071b554d6cd97a7639cb0e8ce33",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 6945,
"upload_time": "2025-08-02T00:21:35",
"upload_time_iso_8601": "2025-08-02T00:21:35.228609Z",
"url": "https://files.pythonhosted.org/packages/c2/8c/3d67947f5413e2321508f80b90e2f353e4496b881d3931b790091156f61d/log_to_loki-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "dd3327d331dd2e31595f2d6469bee8d0c13ed5cd7ac7e7ee33163400af8967a5",
"md5": "cf4c111d21c90af64a5fb891636ea4ea",
"sha256": "4d5880a291310c80dc6112b521ec0bcb57e07a3800cf4db37aac6b4a44099488"
},
"downloads": -1,
"filename": "log_to_loki-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "cf4c111d21c90af64a5fb891636ea4ea",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 8345,
"upload_time": "2025-08-02T00:21:36",
"upload_time_iso_8601": "2025-08-02T00:21:36.667725Z",
"url": "https://files.pythonhosted.org/packages/dd/33/27d331dd2e31595f2d6469bee8d0c13ed5cd7ac7e7ee33163400af8967a5/log_to_loki-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-02 00:21:36",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "yyunoshev",
"github_project": "log-to-loki",
"github_not_found": true,
"lcname": "log-to-loki"
}