def test_program_name_filter(self): """Make sure :func:`install()` integrates with :class:`~coloredlogs.ProgramNameFilter()`.""" install(fmt='%(programname)s') with CaptureOutput() as capturer: logging.info("A truly insignificant message ..") output = capturer.get_text() assert find_program_name() in output
def enable_system_logging(programname=None, fmt=None, logger=None, reconfigure=True, **kw): """ Redirect :mod:`logging` messages to the system log (e.g. ``/var/log/syslog``). :param programname: The program name to embed in log messages (a string, defaults to the result of :func:`~coloredlogs.find_program_name()`). :param fmt: The log format for system log messages (a string, defaults to :data:`DEFAULT_LOG_FORMAT`). :param logger: The logger to which the :class:`~logging.handlers.SysLogHandler` should be connected (defaults to the root logger). :param level: The logging level for the :class:`~logging.handlers.SysLogHandler` (defaults to :data:`.DEFAULT_LOG_LEVEL`). This value is coerced using :func:`~coloredlogs.level_to_number()`. :param reconfigure: If :data:`True` (the default) multiple calls to :func:`enable_system_logging()` will each override the previous configuration. :param kw: Refer to :func:`connect_to_syslog()`. :returns: A :class:`~logging.handlers.SysLogHandler` object or :data:`None`. If an existing handler is found and `reconfigure` is :data:`False` the existing handler object is returned. If the connection to the system logging daemon fails :data:`None` is returned. .. note:: When the logger's effective level is too restrictive it is relaxed (refer to `notes about log levels`_ for details). """ # Provide defaults for omitted arguments. programname = programname or find_program_name() logger = logger or logging.getLogger() fmt = fmt or DEFAULT_LOG_FORMAT level = level_to_number(kw.get('level', DEFAULT_LOG_LEVEL)) # Check whether system logging is already enabled. handler, logger = replace_handler(logger, match_syslog_handler, reconfigure) # Make sure reconfiguration is allowed or not relevant. if not (handler and not reconfigure): # Create a system logging handler. handler = connect_to_syslog(**kw) # Make sure the handler was successfully created. if handler: # Enable the use of %(programname)s. ProgramNameFilter.install(handler=handler, fmt=fmt, programname=programname) # Connect the formatter, handler and logger. handler.setFormatter(logging.Formatter(fmt)) logger.addHandler(handler) # Adjust the level of the selected logger. adjust_level(logger, level) return handler
def enable_system_logging(programname=None, fmt=None, logger=None, reconfigure=True, **kw): """ Redirect :mod:`logging` messages to the system log (e.g. ``/var/log/syslog``). :param programname: The program name to embed in log messages (a string, defaults to the result of :func:`~coloredlogs.find_program_name()`). :param fmt: The log format for system log messages (a string, defaults to :data:`DEFAULT_LOG_FORMAT`). :param logger: The logger to which the :class:`~logging.handlers.SysLogHandler` should be connected (defaults to the root logger). :param reconfigure: If :data:`True` (the default) multiple calls to :func:`enable_system_logging()` will each override the previous configuration. :param kw: Refer to :func:`connect_to_syslog()`. :returns: A :class:`~logging.handlers.SysLogHandler` object or :data:`None`. If an existing handler is found and `reconfigure` is :data:`False` the existing handler object is returned. If the connection to the system logging daemon fails :data:`None` is returned. """ # Remove the keyword arguments that we can handle. programname = programname or find_program_name() logger = logger or logging.getLogger() fmt = fmt or DEFAULT_LOG_FORMAT # Check whether system logging is already enabled. match_syslog_handler = lambda handler: isinstance( handler, logging.handlers.SysLogHandler) handler, logger = replace_handler(logger, match_syslog_handler, reconfigure) # Make sure reconfiguration is allowed or not relevant. if not (handler and not reconfigure): # Create a system logging handler. handler = connect_to_syslog(**kw) # Make sure the handler was successfully created. if handler: # Enable the use of %(programname)s. ProgramNameFilter.install(handler=handler, fmt=fmt, programname=programname) # Connect the formatter, handler and logger. handler.setFormatter(logging.Formatter(fmt)) logger.addHandler(handler) return handler
def enable_system_logging(programname=None, fmt=None, logger=None, reconfigure=True, **kw): """ Redirect :mod:`logging` messages to the system log (e.g. ``/var/log/syslog``). :param programname: The program name to embed in log messages (a string, defaults to the result of :func:`~coloredlogs.find_program_name()`). :param fmt: The log format for system log messages (a string, defaults to :data:`DEFAULT_LOG_FORMAT`). :param logger: The logger to which the :class:`~logging.handlers.SysLogHandler` should be connected (defaults to the root logger). :param reconfigure: If :data:`True` (the default) multiple calls to :func:`enable_system_logging()` will each override the previous configuration. :param kw: Refer to :func:`connect_to_syslog()`. :returns: A :class:`~logging.handlers.SysLogHandler` object or :data:`None`. If an existing handler is found and `reconfigure` is :data:`False` the existing handler object is returned. If the connection to the system logging daemon fails :data:`None` is returned. """ # Remove the keyword arguments that we can handle. programname = programname or find_program_name() logger = logger or logging.getLogger() fmt = fmt or DEFAULT_LOG_FORMAT # Check whether system logging is already enabled. match_syslog_handler = lambda handler: isinstance(handler, logging.handlers.SysLogHandler) handler, logger = replace_handler(logger, match_syslog_handler, reconfigure) # Make sure reconfiguration is allowed or not relevant. if not (handler and not reconfigure): # Create a system logging handler. handler = connect_to_syslog(**kw) # Make sure the handler was successfully created. if handler: # Enable the use of %(programname)s. ProgramNameFilter.install(handler=handler, fmt=fmt, programname=programname) # Connect the formatter, handler and logger. handler.setFormatter(logging.Formatter(fmt)) logger.addHandler(handler) return handler
import sys import time from logging.handlers import TimedRotatingFileHandler from math import factorial as mf import coloredlogs import pandas as pd from chardet.universaldetector import UniversalDetector from lucidic import Lucidic from rich import print # import markdown __version__ = "1.0.4" # -- CONFIGS -- # MODULE = coloredlogs.find_program_name() LOG_FILE = 'logs/{}.log'.format(os.path.splitext(MODULE)[0]) field_styles = { 'asctime': { 'color': 221, 'bright': True }, 'programname': { 'color': 45, 'faint': True }, 'funcName': { 'color': 177, 'normal': True }, 'lineno': {