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()