import logging from logging.handlers import TimedRotatingFileHandler logger = logging.getLogger("garflog") logger.setLevel(logging.INFO) formatter = logging.Formatter( "%(asctime)s [%(levelname)s] %(message)s", datefmt="%Y-%m-%d %H:%M:%S" ) file_handler = TimedRotatingFileHandler( "garfbot.log", when="midnight", interval=1, backupCount=7, delay=True, # Counter-intuitively, this will flush output immediately ) file_handler.setFormatter(formatter) console_handler = logging.StreamHandler() console_handler.setFormatter(formatter) logger.addHandler(file_handler) logger.addHandler(console_handler) if not logger.hasHandlers(): logger.addHandler(file_handler) logger.addHandler(console_handler)