#!/usr/bin/python import time import urllib3 import json from systemd import journal urllib3.disable_warnings() http = urllib3.PoolManager() webhook_url = "<%= @slack_logger %>" webhook_username = "<%= @slack_logger_username %>" webhook_icon = "https://git.immae.eu/releases/logger.png" def send_to_discord(message): def send_chunk(chunk): data = { "avatar_url": webhook_icon, "username": webhook_username, "content": "```\n{}\n```".format(chunk), } encoded = json.dumps(data).encode('utf-8') r = http.request("POST", webhook_url, headers={'Content-Type': 'application/json'}, body=encoded) if r.status == 429: b = json.loads(r.data) time.sleep(b["retry_after"] / 900) r = http.request("POST", webhook_url, headers={'Content-Type': 'application/json'}, body=encoded) assert r.status < 299 chunk = "" for line in message.split("\n"): if len(line) + len(chunk) > 2000 - 17: send_chunk(chunk) chunk = line else: chunk += "\n" + line send_chunk(chunk) j = journal.Reader() j.add_match(_SYSTEMD_UNIT="cryptoportfolio-app.service") j.seek_tail() list(j) while True: lines = [entry["MESSAGE"] for entry in list(j)] if len(lines) > 0: send_to_discord("\n".join(lines)) time.sleep(3)