1
0
mirror of https://github.com/gryf/urxvt-wrapper.git synced 2025-12-17 11:30:21 +01:00

Added logging functionality

This commit is contained in:
2021-02-17 21:59:19 +01:00
parent af20376e67
commit e4c0865b2d

View File

@@ -12,6 +12,61 @@ import collections
import os
import subprocess
import sys
import logging
class Logger(object):
"""
Logger class with output on console only
"""
def __init__(self, logger_name):
"""
Initialize named logger
"""
self._log = logging.getLogger(logger_name)
self.setup_logger()
self._log.set_verbose = self.set_verbose
def __call__(self):
"""
Calling this object will return configured logging.Logger object with
additional set_verbose() method.
"""
return self._log
def set_verbose(self, verbose_level, quiet_level):
"""
Change verbosity level. Default level is warning.
"""
self._log.setLevel(logging.WARNING)
if quiet_level:
self._log.setLevel(logging.ERROR)
if quiet_level > 1:
self._log.setLevel(logging.CRITICAL)
if verbose_level:
self._log.setLevel(logging.INFO)
if verbose_level > 1:
self._log.setLevel(logging.DEBUG)
def setup_logger(self):
"""
Create setup instance and make output meaningful :)
"""
if self._log.handlers:
# need only one handler
return
console_handler = logging.StreamHandler(sys.stderr)
console_handler.set_name("console")
console_formatter = logging.Formatter("%(levelname)s: %(message)s")
console_handler.setFormatter(console_formatter)
self._log.addHandler(console_handler)
self._log.setLevel(logging.WARNING)
LOG = Logger(__name__)()
SIZE = os.environ.get('URXVT_SIZE', 14)
@@ -87,6 +142,7 @@ def _get_all_suitable_fonts():
style = _parse_style(styles)
if not style:
LOG.debug('No suitable styles found for font in line: %s', line)
continue
for name in font_names:
@@ -94,6 +150,8 @@ def _get_all_suitable_fonts():
bold[name] = style
elif style.lower() != 'bold' and not regular.get(name):
regular[name] = style
else:
LOG.debug('Font %s probably already exists in dict', name)
return {'regular': regular, 'bold': bold}
@@ -106,7 +164,8 @@ def _get_style(name, bold=False):
try:
return _AVAILABLE_FONTS[key][name]
except KeyError:
print(f'There is no matching font for name "{name}".')
LOG.warning('There is no matching font for name "%s" for style %s.',
name, key)
return None