nextcloud_log_alert.py aktualisiert
This commit is contained in:
@ -7,7 +7,7 @@ from time import sleep
|
|||||||
CONFIG_FILE = "/opt/nextcloud_log_alert/config.conf"
|
CONFIG_FILE = "/opt/nextcloud_log_alert/config.conf"
|
||||||
LOG_LEVELS = {0: "DEBUG", 1: "INFO", 2: "WARN", 3: "ERROR", 4: "FATAL"}
|
LOG_LEVELS = {0: "DEBUG", 1: "INFO", 2: "WARN", 3: "ERROR", 4: "FATAL"}
|
||||||
|
|
||||||
# Konfigurationswerte aus Datei laden
|
|
||||||
def load_config():
|
def load_config():
|
||||||
config = configparser.ConfigParser()
|
config = configparser.ConfigParser()
|
||||||
if os.path.exists(CONFIG_FILE):
|
if os.path.exists(CONFIG_FILE):
|
||||||
@ -17,10 +17,10 @@ def load_config():
|
|||||||
return webhook_url, log_file
|
return webhook_url, log_file
|
||||||
return None, "/home/data/nextcloud.log"
|
return None, "/home/data/nextcloud.log"
|
||||||
|
|
||||||
# Webhook und Log-Dateipfad abrufen
|
|
||||||
webhook_url, LOG_FILE = load_config()
|
webhook_url, LOG_FILE = load_config()
|
||||||
|
|
||||||
# Log-Datei auslesen
|
|
||||||
def read_logs():
|
def read_logs():
|
||||||
try:
|
try:
|
||||||
with open(LOG_FILE, "r") as file:
|
with open(LOG_FILE, "r") as file:
|
||||||
@ -28,23 +28,23 @@ def read_logs():
|
|||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
# Letzte gesendete Logs speichern
|
|
||||||
last_sent = set()
|
last_sent = set()
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
logs = read_logs()
|
logs = read_logs()
|
||||||
for log in logs[-10:]: # Nur die letzten 10 Zeilen überprüfen
|
for log in logs[-10:]:
|
||||||
try:
|
try:
|
||||||
log_entry = json.loads(log)
|
log_entry = json.loads(log)
|
||||||
log_level = log_entry.get("level", -1)
|
log_level = log_entry.get("level", -1)
|
||||||
log_level_text = LOG_LEVELS.get(log_level, "UNKNOWN")
|
log_level_text = LOG_LEVELS.get(log_level, "UNKNOWN")
|
||||||
|
|
||||||
if log not in last_sent:
|
if log not in last_sent:
|
||||||
last_sent.add(log) # Verhindert doppelte Einträge
|
last_sent.add(log)
|
||||||
embed = {
|
embed = {
|
||||||
"title": f"Nextcloud Log Alert ({log_level_text}) :bell:",
|
"title": f"Nextcloud Log Alert ({log_level_text}) :bell:",
|
||||||
"description": log_entry.get("message", "Keine Nachricht"),
|
"description": log_entry.get("message", "Keine Nachricht"),
|
||||||
"color": 5814783 if log_level < 3 else 16711680, # Rot für ERROR/FATAL
|
"color": 5814783 if log_level < 3 else 16711680,
|
||||||
"fields": [
|
"fields": [
|
||||||
{"name": "Log Level", "value": log_level_text, "inline": True},
|
{"name": "Log Level", "value": log_level_text, "inline": True},
|
||||||
{"name": "App", "value": log_entry.get("app", "Unbekannt"), "inline": True},
|
{"name": "App", "value": log_entry.get("app", "Unbekannt"), "inline": True},
|
||||||
|
Reference in New Issue
Block a user