Source code for remoteappmanager.logging.logging_mixin
import uuid
import types
from traitlets import (
HasTraits,
Instance,
default
)
[docs]def issue(self, message, exc=None):
"""Accepts a message that will be logged with an additional reference
code for easy log lookup.
The identifier will be returned for inclusion in user-visible
error messages.
"""
ref = str(uuid.uuid1())
if exc is None:
err_message = "{}. Ref: {}".format(message, ref)
else:
err_message = "{} : {}. Ref: {}".format(
message, str(exc), ref)
self.error(err_message)
return ref
class LoggingMixin(HasTraits):
"""A HasTrait class that provides logging. Used as a mixin.
"""
log = Instance('logging.Logger')
@default('log')
def _log_default(self):
from tornado.log import app_log
# monkey patch the logger to provide an additional method that handles
# issues
app_log.issue = types.MethodType(issue, app_log)
return app_log