Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
gmr-ingest / __init__.py
Size: Mime:
__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()