diff --git a/src/room_control/base.py b/src/room_control/base.py index 8662438..6b8e94b 100644 --- a/src/room_control/base.py +++ b/src/room_control/base.py @@ -46,19 +46,15 @@ class AsyncLokiHandler(Handler, metaclass=Singleton): self.loop.create_task(self.send_to_loki(record)) async def send_to_loki(self, record: LogRecord): + labels = {'room': record.room} + if component := getattr(record, 'component', False): + labels['component'] = component + message = self.format(record) ns = round(record.created * 1_000_000_000) # https://grafana.com/docs/loki/latest/reference/loki-http-api/#ingest-logs - payload = { - 'streams': [ - { - 'stream': {'app': 'loki'}, - 'values': [[str(ns), message]], - } - ] - } - + payload = {'streams': [{'stream': labels, 'values': [[str(ns), message]]}]} await self.queue.put(payload) async def log_consumer(self): @@ -99,6 +95,7 @@ class RoomControlBase(ADAPI): { 'version': 1, 'disable_existing_loggers': False, + 'filters': {'unmarkup': {'()': 'room_control.console.UnMarkupFilter'}}, 'formatters': { 'basic': {'style': '{', 'format': '{message}'}, 'rich': { @@ -125,6 +122,7 @@ class RoomControlBase(ADAPI): }, 'async_queue': { 'formatter': 'basic', + 'filters': ['unmarkup'], '()': 'room_control.base.AsyncLokiHandler', 'loop': self.AD.loop, 'loki_url': self.args['loki_url'],