Use systemd journal for logging

This commit is contained in:
daniele 2023-04-29 22:26:38 +02:00
parent 7d0125344f
commit c02fd658bc
Signed by: fuxino
GPG Key ID: 981A2B2A3BBF5514

View File

@ -1,20 +1,24 @@
#!/usr/bin/python3 #!/usr/bin/python3
# Import libraries # Import libraries
from dotenv import load_dotenv
import os import os
from functools import wraps from functools import wraps
import dbus
from shutil import rmtree from shutil import rmtree
import argparse import argparse
import configparser import configparser
import logging import logging
from logging import StreamHandler from logging import StreamHandler
from logging.handlers import RotatingFileHandler
from timeit import default_timer from timeit import default_timer
from subprocess import Popen, PIPE, STDOUT from subprocess import Popen, PIPE, STDOUT
from datetime import datetime from datetime import datetime
from tempfile import mkstemp from tempfile import mkstemp
import dbus
from dotenv import load_dotenv
try:
from systemd import journal
except ImportError:
pass
load_dotenv() load_dotenv()
@ -30,25 +34,23 @@ logging.getLogger().setLevel(logging.DEBUG)
logger = logging.getLogger(os.path.basename(__file__)) logger = logging.getLogger(os.path.basename(__file__))
c_handler = StreamHandler() c_handler = StreamHandler()
try:
f_handler = RotatingFileHandler(f'{homedir}/.simple_backup/simple_backup.log', maxBytes=1024000, backupCount=5)
except Exception:
f_handler = None
c_handler.setLevel(logging.INFO) c_handler.setLevel(logging.INFO)
c_format = logging.Formatter('%(name)s - %(levelname)s - %(message)s') c_format = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
c_handler.setFormatter(c_format) c_handler.setFormatter(c_format)
logger.addHandler(c_handler) logger.addHandler(c_handler)
if f_handler: try:
f_handler.setLevel(logging.INFO) j_handler = journal.JournalHandler()
f_format = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') j_handler.setLevel(logging.INFO)
f_handler.setFormatter(f_format) j_format = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s', '%Y-%m-%dT%H:%M:%S%z')
logger.addHandler(f_handler) j_handler.setFormatter(j_format)
logger.addHandler(j_handler)
except NameError:
pass
def timing(_logger): def timing(_logger):
def decorater_timing(func): def decorator_timing(func):
@wraps(func) @wraps(func)
def wrapper_timing(*args, **kwargs): def wrapper_timing(*args, **kwargs):
start = default_timer() start = default_timer()
@ -63,7 +65,7 @@ def timing(_logger):
return wrapper_timing return wrapper_timing
return decorater_timing return decorator_timing
class MyFormatter(argparse.RawTextHelpFormatter, argparse.ArgumentDefaultsHelpFormatter): class MyFormatter(argparse.RawTextHelpFormatter, argparse.ArgumentDefaultsHelpFormatter):
@ -163,8 +165,8 @@ class Backup:
logger.error('Failed to remove last_backup link') logger.error('Failed to remove last_backup link')
self._err_flag = True self._err_flag = True
inputs_handle, self._inputs_path = mkstemp(prefix='tmp_inputs', text=True) _, self._inputs_path = mkstemp(prefix='tmp_inputs', text=True)
exclude_handle, self._exclude_path = mkstemp(prefix='tmp_exclude', text=True) _, self._exclude_path = mkstemp(prefix='tmp_exclude', text=True)
with open(self._inputs_path, 'w') as fp: with open(self._inputs_path, 'w') as fp:
for i in self.inputs: for i in self.inputs: