Repository URL to install this package:
|
Version:
0.17.0 ▾
|
gmr-ingest
/
__init__.py
|
|---|
__version__="0.17.0"
import logging
from logging.handlers import RotatingFileHandler
import os
from os.path import expanduser
class Config(object):
INGEST_LOG_PATH = os.environ.get('INGEST_LOG_PATH') or expanduser("~")
INGEST_LOG_FILENAME = os.environ.get('INGEST_LOG_FILENAME') or 'gmr_ingest.log'
def setup_logging(log_level=logging.INFO, max_bytes=2000000, backup_count=5):
"""
Setup logging, declare file formats, log rotation
For details see https://docs.python.org/3/howto/logging-cookbook.html#using-file-rotation
:param log_level: Minimum message level which gets logged. Default: INFO
:param max_bytes: Maximum size of log file before a new file is created. Default: 2MB
:param backup_count: Number of old files to keep. Default: 5 files
"""
cfg = Config()
if not os.path.exists(cfg.INGEST_LOG_PATH):
os.mkdir(cfg.INGEST_LOG_PATH)
# Set up a specific logger with our desired output level
base_logger = logging.getLogger(__name__)
base_logger.setLevel(log_level)
# setup rotating file handler
handler = RotatingFileHandler(
os.path.join(cfg.INGEST_LOG_PATH, cfg.INGEST_LOG_FILENAME),
maxBytes=max_bytes, backupCount=backup_count)
# setup log format to print timestamp, logger name, message label and message on each line
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# set custom formatter to handler
handler.setFormatter(formatter)
# Add the log message handler to the logger
base_logger.addHandler(handler)
base_logger.info(f'Set up logging to {cfg.INGEST_LOG_PATH}{os.path.sep}{cfg.INGEST_LOG_FILENAME}')
return base_logger
setup_logging()