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:
61
urxvt.py
61
urxvt.py
@@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user