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 os
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
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)
|
SIZE = os.environ.get('URXVT_SIZE', 14)
|
||||||
@@ -87,6 +142,7 @@ def _get_all_suitable_fonts():
|
|||||||
|
|
||||||
style = _parse_style(styles)
|
style = _parse_style(styles)
|
||||||
if not style:
|
if not style:
|
||||||
|
LOG.debug('No suitable styles found for font in line: %s', line)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
for name in font_names:
|
for name in font_names:
|
||||||
@@ -94,6 +150,8 @@ def _get_all_suitable_fonts():
|
|||||||
bold[name] = style
|
bold[name] = style
|
||||||
elif style.lower() != 'bold' and not regular.get(name):
|
elif style.lower() != 'bold' and not regular.get(name):
|
||||||
regular[name] = style
|
regular[name] = style
|
||||||
|
else:
|
||||||
|
LOG.debug('Font %s probably already exists in dict', name)
|
||||||
|
|
||||||
return {'regular': regular, 'bold': bold}
|
return {'regular': regular, 'bold': bold}
|
||||||
|
|
||||||
@@ -106,7 +164,8 @@ def _get_style(name, bold=False):
|
|||||||
try:
|
try:
|
||||||
return _AVAILABLE_FONTS[key][name]
|
return _AVAILABLE_FONTS[key][name]
|
||||||
except KeyError:
|
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
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user