Skip to content

Instantly share code, notes, and snippets.

@kingspp
Created April 22, 2017 07:14
Show Gist options
  • Save kingspp/9451566a5555fb022215ca2b7b802f19 to your computer and use it in GitHub Desktop.
Save kingspp/9451566a5555fb022215ca2b7b802f19 to your computer and use it in GitHub Desktop.

Revisions

  1. kingspp created this gist Apr 22, 2017.
    30 changes: 30 additions & 0 deletions logging.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,30 @@
    import os
    import yaml
    import logging.config
    import logging
    import coloredlogs

    def setup_logging(default_path='logging.yaml', default_level=logging.INFO, env_key='LOG_CFG'):
    """
    | **@author:** Prathyush SP
    | Logging Setup
    """
    path = default_path
    value = os.getenv(env_key, None)
    if value:
    path = value
    if os.path.exists(path):
    with open(path, 'rt') as f:
    try:
    config = yaml.safe_load(f.read())
    logging.config.dictConfig(config)
    coloredlogs.install()
    except Exception as e:
    print(e)
    print('Error in Logging Configuration. Using default configs')
    logging.basicConfig(level=default_level)
    coloredlogs.install(level=default_level)
    else:
    logging.basicConfig(level=default_level)
    coloredlogs.install(level=default_level)
    print('Failed to load configuration file. Using default configs')
    78 changes: 78 additions & 0 deletions logging.yaml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,78 @@
    version: 1
    disable_existing_loggers: true



    formatters:
    standard:
    format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
    error:
    format: "%(levelname)s <PID %(process)d:%(processName)s> %(name)s.%(funcName)s(): %(message)s"

    handlers:
    console:
    class: logging.StreamHandler
    level: DEBUG
    formatter: standard
    stream: ext://sys.stdout

    info_file_handler:
    class: logging.handlers.RotatingFileHandler
    level: INFO
    formatter: standard
    filename: /tmp/info.log
    maxBytes: 10485760 # 10MB
    backupCount: 20
    encoding: utf8

    error_file_handler:
    class: logging.handlers.RotatingFileHandler
    level: ERROR
    formatter: error
    filename: /tmp/errors.log
    maxBytes: 10485760 # 10MB
    backupCount: 20
    encoding: utf8

    debug_file_handler:
    class: logging.handlers.RotatingFileHandler
    level: DEBUG
    formatter: standard
    filename: /tmp/debug.log
    maxBytes: 10485760 # 10MB
    backupCount: 20
    encoding: utf8

    critical_file_handler:
    class: logging.handlers.RotatingFileHandler
    level: CRITICAL
    formatter: standard
    filename: /tmp/critical.log
    maxBytes: 10485760 # 10MB
    backupCount: 20
    encoding: utf8

    warn_file_handler:
    class: logging.handlers.RotatingFileHandler
    level: WARN
    formatter: standard
    filename: /tmp/warn.log
    maxBytes: 10485760 # 10MB
    backupCount: 20
    encoding: utf8

    root:
    level: NOTSET
    handlers: [console]
    propogate: yes

    loggers:
    <module>:
    level: INFO
    handlers: [console, info_file_handler, error_file_handler, critical_file_handler, debug_file_handler, warn_file_handler]
    propogate: no

    <module.x>:
    level: DEBUG
    handlers: [info_file_handler, error_file_handler, critical_file_handler, debug_file_handler, warn_file_handler]
    propogate: yes