39 lines
967 B
Python
39 lines
967 B
Python
#!/usr/bin/env python3
|
|
|
|
import subprocess
|
|
from shutil import which
|
|
import logging
|
|
import logging.handlers
|
|
|
|
|
|
def send_to_matrix(message: str) -> None:
|
|
if which("sendxmpppy") is None:
|
|
logging.warning("Could not send error via xmpp.")
|
|
return
|
|
subprocess.call(["sendxmpppy", message], stdout=subprocess.DEVNULL)
|
|
|
|
|
|
class LogSenderHandler(logging.Handler):
|
|
def __init__(self):
|
|
logging.Handler.__init__(self)
|
|
self.is_logging = False
|
|
|
|
def emit(self, record):
|
|
msg = f"[Apps tools error] {record.msg}"
|
|
send_to_matrix(msg)
|
|
|
|
@classmethod
|
|
def add(cls, level=logging.ERROR):
|
|
if not logging.getLogger().handlers:
|
|
logging.basicConfig()
|
|
|
|
# create handler
|
|
handler = cls()
|
|
handler.setLevel(level)
|
|
# add the handler
|
|
logging.getLogger().handlers.append(handler)
|
|
|
|
|
|
def enable():
|
|
"""Enables the LogSenderHandler"""
|
|
LogSenderHandler.add(logging.ERROR)
|