Try and encode logging messages. fix #403

This commit is contained in:
Ruud
2012-06-11 12:38:22 +02:00
parent 9cb4d8842c
commit e0440d4b11
59 changed files with 274 additions and 259 deletions
+34 -18
View File
@@ -1,5 +1,6 @@
import logging
import re
import traceback
class CPLog(object):
@@ -13,39 +14,54 @@ class CPLog(object):
self.context = context
self.logger = logging.getLogger()
def info(self, msg):
self.logger.info(self.addContext(msg))
def info(self, msg, replace_tuple = ()):
self.logger.info(self.addContext(msg, replace_tuple))
def debug(self, msg):
self.logger.debug(self.addContext(msg))
def debug(self, msg, replace_tuple = ()):
self.logger.debug(self.addContext(msg, replace_tuple))
def error(self, msg):
self.logger.error(self.addContext(msg))
def error(self, msg, replace_tuple = ()):
self.logger.error(self.addContext(msg, replace_tuple))
def warning(self, msg):
self.logger.warning(self.addContext(msg))
def warning(self, msg, replace_tuple = ()):
self.logger.warning(self.addContext(msg, replace_tuple))
def critical(self, msg):
self.logger.critical(self.addContext(msg), exc_info = 1)
def critical(self, msg, replace_tuple = ()):
self.logger.critical(self.addContext(msg, replace_tuple), exc_info = 1)
def addContext(self, msg):
return '[%+25.25s] %s' % (self.context[-25:], self.removePrivateData(msg))
def addContext(self, msg, replace_tuple = ()):
return '[%+25.25s] %s' % (self.context[-25:], self.safeMessage(msg, replace_tuple))
def safeMessage(self, msg, replace_tuple = ()):
if not hasattr(self, 'Env'):
from couchpotato.environment import Env
from couchpotato.core.helpers.encoding import toUnicode
self.Env = Env
self.toUnicode = toUnicode
msg = self.toUnicode(msg)
def removePrivateData(self, msg):
try:
msg = unicode(msg)
msg = msg % replace_tuple
except:
pass
try:
if isinstance(replace_tuple, tuple):
msg = msg % tuple([self.toUnicode(x).encode(self.Env.get('encoding')) for x in list(replace_tuple)])
else:
msg = msg % self.toUnicode(replace_tuple).encode(self.Env.get('encoding'))
except:
self.error('Failed encoding stuff to log: %s' % traceback.format_exc())
from couchpotato.environment import Env
if not Env.get('dev'):
if not self.Env.get('dev'):
for replace in self.replace_private:
msg = re.sub('(%s=)[^\&]+' % replace, '%s=xxx' % replace, msg)
# Replace api key
try:
api_key = Env.setting('api_key')
api_key = self.Env.setting('api_key')
if api_key:
msg = msg.replace(api_key, 'API_KEY')
except: