add throttling to error metric logging

add back in consumption of exception in function wrapper
This commit is contained in:
shaun 2016-11-01 20:48:24 +11:00
parent 817ad63007
commit d7728afea0
4 changed files with 22 additions and 5 deletions

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.emby" <addon id="plugin.video.emby"
name="Emby" name="Emby"
version="2.3.3" version="2.3.4"
provider-name="Emby.media"> provider-name="Emby.media">
<requires> <requires>
<import addon="xbmc.python" version="2.19.0"/> <import addon="xbmc.python" version="2.19.0"/>

View file

@ -1,3 +1,6 @@
version 2.3.4
- add throttling for error event logging
version 2.3.3 version 2.3.3
- minor fix to exception handling - minor fix to exception handling

View file

@ -8,6 +8,7 @@ import md5
import xbmc import xbmc
import platform import platform
import xbmcgui import xbmcgui
import time
from utils import window, settings, language as lang from utils import window, settings, language as lang
log = logging.getLogger("EMBY."+__name__) log = logging.getLogger("EMBY."+__name__)
@ -15,6 +16,8 @@ log = logging.getLogger("EMBY."+__name__)
# for info on the metrics that can be sent to Google Analytics # for info on the metrics that can be sent to Google Analytics
# https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#events # https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#events
logEventHistory = {}
class GoogleAnalytics(): class GoogleAnalytics():
testing = False testing = False
@ -128,7 +131,18 @@ class GoogleAnalytics():
self.sendData(data) self.sendData(data)
def sendEventData(self, eventCategory, eventAction, eventLabel=None): def sendEventData(self, eventCategory, eventAction, eventLabel=None, throttle=False):
# if throttling is enabled then only log the same event every 60 seconds
if(throttle):
throttleKey = eventCategory + "-" + eventAction + "-" + str(eventLabel)
lastLogged = logEventHistory.get(throttleKey)
if(lastLogged != None):
timeSinceLastLog = time.time() - lastLogged
if(timeSinceLastLog < 60):
log.info("SKIPPING_LOG_EVENT : " + str(timeSinceLastLog) + " " + throttleKey)
return
logEventHistory[throttleKey] = time.time()
data = self.getBaseData() data = self.getBaseData()
data['t'] = 'event' # action type data['t'] = 'event' # action type

View file

@ -22,7 +22,7 @@ ga = GoogleAnalytics()
################################################################################################## ##################################################################################################
def catch_except(errors=(Exception, )): def catch_except(errors=(Exception, ), default_value=False):
# Will wrap method with try/except and print parameters for easier debugging # Will wrap method with try/except and print parameters for easier debugging
def decorator(func): def decorator(func):
def wrapper(*args, **kwargs): def wrapper(*args, **kwargs):
@ -30,11 +30,11 @@ def catch_except(errors=(Exception, )):
return func(*args, **kwargs) return func(*args, **kwargs)
except errors as error: except errors as error:
errStrings = ga.formatException() errStrings = ga.formatException()
ga.sendEventData("Exception", errStrings[0], errStrings[1]) ga.sendEventData("Exception", errStrings[0], errStrings[1], True)
log.exception(error) log.exception(error)
log.error("function: %s \n args: %s \n kwargs: %s", log.error("function: %s \n args: %s \n kwargs: %s",
func.__name__, args, kwargs) func.__name__, args, kwargs)
raise return default_value
return wrapper return wrapper
return decorator return decorator