Source code for sadaco.apis.logger.basic

import os
import json
from datetime import datetime
from typing import DefaultDict
import string
import random

[docs]class BaseLogger: def __init__(self, config, log_path = 'logs'): self.configs = config self.group_id = self.configs['Master']['prefix'] self.now = datetime.now() self.name = self.generate_expid() self.log_path = os.path.join(log_path, self.group_id, self.name) os.makedirs(self.log_path, exist_ok=True) self.exp_logs = os.path.join(self.log_path, 'log.txt') json.dump(self.configs, open(os.path.join(self.log_path, 'configs.json'), 'w'))
[docs] def log(self, logs : DefaultDict): logstring = f"{self.now.strftime('%H:%M:%S')} : " logstring += ''.join([f'{k} : {v}\t' for k,v in logs.items()]) logstring += '\n' with open(self.exp_logs, 'a') as el: el.write(logstring)
[docs] def generate_expid(self, size=6, chars=string.ascii_lowercase+string.digits): return self.now.strftime('%Y%m%d_%H%M%S_') + ''.join(random.choice(chars) for _ in range(size))