Source code for ariane.lib.utils.logging
from datetime import datetime
import json
from logging import FileHandler, Formatter, StreamHandler, getLogger, INFO
import os
from sys import stdout
FOLDER = "logs"
[docs]
class LoggerMixin:
"""Mixin class for adding a logger instance."""
def __init__(self, name=None):
self.logger = getLogger(name)
self.logger.setLevel(INFO)
os.makedirs(FOLDER, exist_ok=True) # create log directory, if not existing
filename = f"{FOLDER}/{datetime.now().isoformat('_', timespec='seconds')}" \
"_ariane" + (f"_{name}" if name is not None else "") + ".log"
handler_file = FileHandler(filename)
handler_file.setFormatter(
Formatter(fmt='%(asctime)s %(name)-8s %(levelname)-8s %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'))
self.logger.addHandler(handler_file)
handler_terminal = StreamHandler(stdout)
handler_terminal.setFormatter(Formatter(fmt='[%(name)s] %(message)s'))
self.logger.addHandler(handler_terminal)
def save_dict(d, filename):
"""Save dictionary to a file."""
with open(f"{FOLDER}/{filename}", 'w') as fp:
json.dump(d, fp)