import logging
import os
import sys
from logging.handlers import TimedRotatingFileHandler
logger = logging.getLogger("pyfileconf")
logger.setLevel(logging.INFO)
ch = logging.StreamHandler(stream=sys.stdout)
ch.setLevel(logging.DEBUG)
ch.setFormatter(CustomFormatter())
logger.addHandler(ch)
[docs]def add_file_handler():
from pyfileconf.opts import options
if options.log_folder is None:
raise ValueError(f'Cannot enable logging file handler as no log_folder is set in options')
if not os.path.exists(options.log_folder):
os.makedirs(options.log_folder)
log_path = os.path.join(options.log_folder, 'pyfileconf.log')
fh = TimedRotatingFileHandler(
log_path, when=options.log_file_rollover_freq, backupCount=options.log_file_num_keep
)
fh.setLevel(logging.DEBUG)
fh.setFormatter(CustomFormatter())
logger.addHandler(fh)
[docs]def remove_file_handler():
timed_handlers = [h for h in logger.handlers if isinstance(h, TimedRotatingFileHandler)]
if len(timed_handlers) != 1:
raise ValueError(f'Could not remove pyfileconf TimedRotatingFileHandler. '
f'Expected 1 registered TimedRotatingFileHandler, '
f'got {len(timed_handlers)}')
timed_handler = timed_handlers[0]
timed_handler.close()
logger.handlers = [h for h in logger.handlers if h is not timed_handler]