plugin.video.viervijfzes/resources/lib/kodilogging.py

52 lines
1.5 KiB
Python
Raw Normal View History

2020-03-19 16:45:31 +01:00
# -*- coding: utf-8 -*-
"""Log handler for Kodi"""
2020-03-20 13:53:21 +01:00
from __future__ import absolute_import, division, unicode_literals
2020-03-19 16:45:31 +01:00
import logging
import xbmc
import xbmcaddon
ADDON = xbmcaddon.Addon()
2020-03-19 16:45:31 +01:00
class KodiLogHandler(logging.StreamHandler):
""" A log handler for Kodi """
def __init__(self):
logging.StreamHandler.__init__(self)
formatter = logging.Formatter("[{}] [%(name)s] %(message)s".format(ADDON.getAddonInfo("id")))
2020-03-19 16:45:31 +01:00
self.setFormatter(formatter)
def emit(self, record):
""" Emit a log message """
levels = {
logging.CRITICAL: xbmc.LOGFATAL,
logging.ERROR: xbmc.LOGERROR,
logging.WARNING: xbmc.LOGWARNING,
logging.INFO: xbmc.LOGNOTICE,
2020-03-19 16:45:31 +01:00
logging.DEBUG: xbmc.LOGDEBUG,
logging.NOTSET: xbmc.LOGNONE,
}
# Map DEBUG level to LOGNOTICE if debug logging setting has been activated
# This is for troubleshooting only
if ADDON.getSetting('debug_logging') == 'true':
levels[logging.DEBUG] = xbmc.LOGNOTICE
2020-03-19 16:45:31 +01:00
try:
xbmc.log(self.format(record), levels[record.levelno])
except UnicodeEncodeError:
xbmc.log(self.format(record).encode('utf-8', 'ignore'), levels[record.levelno])
def flush(self):
""" Flush the messages """
def config():
""" Setup the logger with this handler """
logger = logging.getLogger()
logger.addHandler(KodiLogHandler())
logger.setLevel(logging.DEBUG)