Ротация логов в приложении на Python
Задача: в приложении используется встроенный logging. Необходимо организовать ротацию логов со сжатием «архива»
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import coloredlogs,logging from logging.handlers import TimedRotatingFileHandler import gzip class GZipRotator: def __call__(self, source, dest): os.rename(source, dest) f_in = open(dest, 'rb') f_out = gzip.open("%s.gz" % dest, 'wb') f_out.writelines(f_in) f_out.close() f_in.close() os.remove(dest) rotation_logging_handler = TimedRotatingFileHandler(gconfig["logging_file"], when='D', interval=1, backupCount=5) rotation_logging_handler.rotator=GZipRotator(); fh = logging.FileHandler('spam.log') fh.filemode="a" logger = logging.getLogger(__name__) logging.basicConfig(format='%(asctime)s %(message)s',datefmt='%d.%m.%Y %H:%M:%S',level=gconfig["logging_level"],handlers=[rotation_logging_handler,fh]) logging.captureWarnings(True) |
Результатом работы будет создание 1 раз в день сжатого файла