From 1d683b11631949773ec2d41f408ff6078d708a7d Mon Sep 17 00:00:00 2001 From: George Lacey Date: Tue, 4 May 2021 09:34:55 +0100 Subject: [PATCH] Implement basic error logging --- src/__init__.py | 0 src/borg/__init__.py | 1 + src/borg/error.py | 17 +++++++++++++++++ src/database/borgdatabase.py | 5 ++++- src/database/connection/errorconn.py | 2 -- 5 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 src/__init__.py create mode 100644 src/borg/error.py diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/borg/__init__.py b/src/borg/__init__.py index 5d9807d..4fc02b5 100644 --- a/src/borg/__init__.py +++ b/src/borg/__init__.py @@ -1,3 +1,4 @@ from .repo import Repo from .archive import Archive from .stats import Stats +from .error import Error diff --git a/src/borg/error.py b/src/borg/error.py new file mode 100644 index 0000000..774f94b --- /dev/null +++ b/src/borg/error.py @@ -0,0 +1,17 @@ +from datetime import datetime + + +class Error(object): + def __init__(self, error: str, time: datetime): + self.error = error + self.time = time + + @classmethod + def from_json(cls, json: dict): + error = json['error'] + time = datetime.fromisoformat(json['time']) + return cls(error, time) + + @classmethod + def from_sql(cls, sql: list): + pass diff --git a/src/database/borgdatabase.py b/src/database/borgdatabase.py index d5f4d66..9b42653 100644 --- a/src/database/borgdatabase.py +++ b/src/database/borgdatabase.py @@ -1,4 +1,5 @@ from .connection import RepoConn, ArchiveConn, StatsConn, ErrorConn +from datetime import datetime from pathlib import Path from src import borg import json @@ -25,6 +26,7 @@ class BorgDatabase(object): borg_json = json.loads(borg_output) except json.JSONDecodeError: self.handle_borg_error(borg_output) + return self.process_borg_json(borg_json) def process_borg_json(self, borg_json: dict): @@ -37,4 +39,5 @@ class BorgDatabase(object): self.stats_conn.insert(stats, repo_id, archive_id) def handle_borg_error(self, borg_error: str): - pass + error = borg.Error(borg_error, datetime.now()) + self.error_conn.insert(error) diff --git a/src/database/connection/errorconn.py b/src/database/connection/errorconn.py index 09c00a9..f4c75ac 100644 --- a/src/database/connection/errorconn.py +++ b/src/database/connection/errorconn.py @@ -17,8 +17,6 @@ class ErrorConn(DatabaseConnection): return None, None def _insert(self, record, repo_id=None, archive_id=None) -> int: - if repo_id is None or archive_id is None: - raise Exception("Repo and archive ids not supplied") with self.sql_lock: cursor = self.sql_cursor statement = f"INSERT INTO {self._sql_table}"\