]> git.mxchange.org Git - fba.git/blob - fba/models/error_log.py
Continued:
[fba.git] / fba / models / error_log.py
1 # Copyright (C) 2023 Free Software Foundation
2 #
3 # This program is free software: you can redistribute it and/or modify
4 # it under the terms of the GNU Affero General Public License as published
5 # by the Free Software Foundation, either version 3 of the License, or
6 # (at your option) any later version.
7 #
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 # GNU Affero General Public License for more details.
12 #
13 # You should have received a copy of the GNU Affero General Public License
14 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
15
16 import json
17 import time
18
19 from fba import config
20 from fba import fba
21
22 def add(domain: str, error: dict):
23     # DEBUG: print("DEBUG: domain,error[]:", domain, type(error))
24     if not isinstance(domain, str):
25         raise ValueError(f"Parameter domain[]='{type(domain)}' is not 'str'")
26     elif domain == "":
27         raise ValueError("Parameter 'domain' is empty")
28     elif config.get("write_error_log").lower() != "true":
29         # DEBUG: print(f"DEBUG: Writing to error_log is disabled in configuruation file - EXIT!")
30         return
31
32     # DEBUG: print("DEBUG: BEFORE error[]:", type(error))
33     if isinstance(error, BaseException, error, json.decoder.JSONDecodeError):
34         error = f"error[{type(error)}]='{str(error)}'"
35
36     # DEBUG: print("DEBUG: AFTER error[]:", type(error))
37     if isinstance(error, str):
38         fba.cursor.execute("INSERT INTO error_log (domain, error_code, error_message, created) VALUES (?, 999, ?, ?)",[
39             domain,
40             error,
41             time.time()
42         ])
43     else:
44         fba.cursor.execute("INSERT INTO error_log (domain, error_code, error_message, created) VALUES (?, ?, ?, ?)",[
45             domain,
46             error["status_code"],
47             error["error_message"],
48             time.time()
49         ])
50
51     # Cleanup old entries
52     # DEBUG: print(f"DEBUG: Purging old records (distance: {config.get('error_log_cleanup')})")
53     fba.cursor.execute("DELETE FROM error_log WHERE created < ?", [time.time() - config.get("error_log_cleanup")])
54
55     # DEBUG: print("DEBUG: EXIT!")