sync/log.py (35 lines of code) (raw):

import logging import os import sys from logging import handlers from . import settings root = logging.getLogger() @settings.configure def setup(config, force=False): # Add a handler for stdout on the root logger log_dir = os.path.join(config["root"], config["paths"]["logs"]) if not os.path.exists(log_dir): os.makedirs(log_dir) root_logger = logging.getLogger() root_logger.setLevel(logging.DEBUG) lock_logger = logging.getLogger("filelock") lock_logger.setLevel(logging.INFO) if root_logger.handlers and not force: return while root_logger.handlers: # If we already have handlers set up for the root logger, don't add more root_logger.removeHandler(root_logger.handlers[0]) stream_handler = logging.StreamHandler(sys.stderr) stream_handler.setLevel(logging.INFO) basic_formatter = logging.Formatter('[%(asctime)s] %(levelname)s:%(name)s:%(message)s') stream_handler.setFormatter(basic_formatter) file_handler = handlers.TimedRotatingFileHandler(os.path.join(log_dir, "sync.log"), when="midnight", utc=True) file_handler.setLevel(logging.DEBUG) file_handler.setFormatter(basic_formatter) root_logger.addHandler(stream_handler) root_logger.addHandler(file_handler) def get_logger(name): logger = logging.getLogger(name) return logger setup()