From b4a453be04564a05bf633bccc78439735a662f67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Trkan?= Date: Thu, 30 Oct 2025 17:38:13 +0100 Subject: [PATCH] feat(logs): add loki logging --- 7project/backend/app/app.py | 23 +++++++++++++++++++++-- 7project/backend/requirements.txt | 2 ++ 7project/tofu/modules/prometheus/main.tf | 18 ++++++++++++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/7project/backend/app/app.py b/7project/backend/app/app.py index 30578b1..98b2c66 100644 --- a/7project/backend/app/app.py +++ b/7project/backend/app/app.py @@ -1,6 +1,8 @@ import logging import os +import sys from datetime import datetime +from pythonjsonlogger import jsonlogger from fastapi import Depends, FastAPI from fastapi.middleware.cors import CORSMiddleware @@ -58,7 +60,24 @@ fastApi.include_router(auth_router) fastApi.include_router(categories_router) fastApi.include_router(transactions_router) -logging.basicConfig(filename='app.log', level=logging.INFO, format='%(asctime)s %(message)s') + +for h in list(logging.root.handlers): + logging.root.removeHandler(h) + +_log_handler = logging.StreamHandler(sys.stdout) +_formatter = jsonlogger.JsonFormatter( + fmt='%(asctime)s %(levelname)s %(name)s %(message)s %(pathname)s %(lineno)d %(process)d %(thread)d' +) +_log_handler.setFormatter(_formatter) + +logging.root.setLevel(logging.INFO) +logging.root.addHandler(_log_handler) + + +for _name in ("uvicorn", "uvicorn.error", "uvicorn.access"): + _logger = logging.getLogger(_name) + _logger.handlers = [_log_handler] + _logger.propagate = True @fastApi.middleware("http") @@ -95,7 +114,7 @@ async def log_traffic(request: Request, call_next): "process_time": process_time, "client_host": client_host } - logging.info(str(log_params)) + logging.getLogger(__name__).info("http_request", extra=log_params) return response diff --git a/7project/backend/requirements.txt b/7project/backend/requirements.txt index d7f5316..840974c 100644 --- a/7project/backend/requirements.txt +++ b/7project/backend/requirements.txt @@ -70,3 +70,5 @@ watchfiles==1.1.0 wcwidth==0.2.14 websockets==15.0.1 yarl==1.20.1 + +python-json-logger==2.0.7 \ No newline at end of file diff --git a/7project/tofu/modules/prometheus/main.tf b/7project/tofu/modules/prometheus/main.tf index e943cfa..fcf553c 100644 --- a/7project/tofu/modules/prometheus/main.tf +++ b/7project/tofu/modules/prometheus/main.tf @@ -64,3 +64,21 @@ resource "kubectl_manifest" "argocd-tunnel-bind" { base_domain = var.cloudflare_domain }) } + +resource "helm_release" "loki_stack" { + name = "loki-stack" + repository = "https://grafana.github.io/helm-charts" + chart = "loki-stack" + namespace = kubernetes_namespace.monitoring.metadata[0].name + version = "2.9.12" + + set = [{ + name = "grafana.enabled" + value = "false" + }] + + + depends_on = [ + helm_release.kube_prometheus_stack + ] +}