PlexKodiConnect/resources/lib/loghandler.py

75 lines
1.9 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
##################################################################################################
import logging
import xbmc
from utils import window
##################################################################################################
def config():
2016-08-22 12:51:23 +10:00
2016-08-30 03:31:41 +10:00
logger = logging.getLogger('PLEX')
logger.addHandler(LogHandler())
logger.setLevel(logging.DEBUG)
class LogHandler(logging.StreamHandler):
def __init__(self):
2016-08-22 12:51:23 +10:00
logging.StreamHandler.__init__(self)
self.setFormatter(MyFormatter())
def emit(self, record):
2016-08-22 12:51:23 +10:00
if self._get_log_level(record.levelno):
try:
2016-08-07 18:40:18 +10:00
xbmc.log(self.format(record), level=xbmc.LOGNOTICE)
except UnicodeEncodeError:
2016-08-07 18:40:18 +10:00
xbmc.log(self.format(record).encode('utf-8'), level=xbmc.LOGNOTICE)
2016-08-22 12:51:23 +10:00
@classmethod
def _get_log_level(cls, level):
levels = {
logging.ERROR: 0,
logging.WARNING: 0,
logging.INFO: 1,
logging.DEBUG: 2
}
try:
2016-08-30 03:31:41 +10:00
log_level = int(window('plex_logLevel'))
except ValueError:
2016-08-22 12:51:23 +10:00
log_level = 0
2016-08-22 12:51:23 +10:00
return log_level >= levels[level]
class MyFormatter(logging.Formatter):
def __init__(self, fmt="%(name)s -> %(message)s"):
2016-08-22 12:51:23 +10:00
logging.Formatter.__init__(self, fmt)
def format(self, record):
# Save the original format configured by the user
# when the logger formatter was instantiated
format_orig = self._fmt
# Replace the original format with one customized by logging level
if record.levelno in (logging.DEBUG, logging.ERROR):
self._fmt = '%(name)s -> %(levelname)s:: %(message)s'
# Call the original formatter class to do the grunt work
result = logging.Formatter.format(self, record)
# Restore the original format configured by the user
self._fmt = format_orig
2016-08-22 12:51:23 +10:00
return result