Source code for pangaea.log
#
# Originally from quest python library
# Adapted for pangaea
#
# License: BSD 3-Clause
"""pangaea.log
This module is for logging with pangaea.
Documentation can be found at `_pangaea Documentation HOWTO`_.
.. _pangaea Documentation HOWTO:
https://github.com/snowman2/pangaea
"""
# default modules
import logging
import os
# external modules
import appdirs
# local modules
from .meta import version
LOGGER = logging.getLogger('pangaea')
LOGGER.addHandler(logging.NullHandler())
LOGGER.propagate = False
DEFAULT_LOG_DIR = appdirs.user_log_dir('pangaea', 'logs')
DEFAULT_LOG_FILE = os.path.join(DEFAULT_LOG_DIR, 'pangaea.log')
[docs]def log_to_console(status=True, level=None):
"""Log events to the console.
Args:
status (bool, Optional, Default=True)
whether logging to console should be turned on(True) or off(False)
level (string, Optional, Default=None) :
level of logging; whichever level is chosen all higher levels
will be logged.
See: https://docs.python.org/2/library/logging.html#levels
"""
if status:
if level is not None:
LOGGER.setLevel(level)
console_handler = logging.StreamHandler()
# create formatter
formatter = logging.Formatter('%(levelname)s-%(name)s: %(message)s')
# add formatter to handler
console_handler.setFormatter(formatter)
LOGGER.addHandler(console_handler)
LOGGER.info("pangaea %s", version())
else:
for handle in LOGGER.handlers:
if type(handle).__name__ == 'StreamHandler':
LOGGER.removeHandler(handle)
[docs]def log_to_file(status=True, filename=DEFAULT_LOG_FILE, level=None):
"""Log events to a file.
Args:
status (bool, Optional, Default=True)
whether logging to file should be turned on(True) or off(False)
filename (string, Optional, Default=None) :
path of file to log to
level (string, Optional, Default=None) :
level of logging; whichever level is chosen all higher levels
will be logged.
See: https://docs.python.org/2/library/logging.html#levels
"""
if status:
if level is not None:
LOGGER.setLevel(level)
try:
os.mkdir(os.path.dirname(filename))
except OSError:
pass
file_handler = logging.FileHandler(filename)
# create formatter
fomat_str = '%(levelname)s-%(name)s: %(message)s'
formatter = logging.Formatter(fomat_str)
# add formatter to handler
file_handler.setFormatter(formatter)
LOGGER.addHandler(file_handler)
LOGGER.info("pangaea %s", version())
else:
for handle in LOGGER.handlers:
if type(handle).__name__ == 'FileHandler':
LOGGER.removeHandler(handle)