38
38
"replaceTwistedLoggers"]
41
def make_id(log_format):
42
module = inspect.currentframe().f_back.f_back.f_globals["__name__"]
41
def make_id(log_format, module=None):
43
module = inspect.currentframe().f_back.f_back.f_globals["__name__"]
43
44
params = urllib.urlencode(dict(format=log_format, module=module))
44
45
uri = "http://virtualbricks.eu/ns/log/?" + params
45
46
return uuid.uuid5(uuid.NAMESPACE_URL, uri)
48
49
class Event(object):
50
def __init__(self, log_format, log_id=None):
51
def __init__(self, log_format, log_id=None, module=None):
51
52
self.log_format = log_format
53
log_id = make_id(log_format)
54
log_id = make_id(log_format, module)
54
55
self.log_id = log_id
56
57
def __call__(self, logger, level, **kwds):
218
219
def emit(self, record):
219
220
kw = dict(("rec_" + k, v) for k, v in record.__dict__.items())
220
221
kw["log_record"] = True
222
msg = self.format(record)
224
self.logger.failure("Unformattable event", **record.__dict__)
226
if record.exc_info is not None:
227
tpe, value, tb = record.exc_info
228
self.logger.failure(msg, failure.Failure(value, tpe, tb), **kw)
222
event = Event(self.format(record), module="virtualbricks.log.std")
223
if record.exc_info is not None:
224
tpe, value, tb = record.exc_info
225
self.logger.failure(event, failure.Failure(value, tpe, tb), **kw)
228
level = self.levels[record.levelname]
230
if record.levelno < logging.DEBUG:
231
level = LogLevel.debug
232
elif record.levelno < logging.INFO:
233
level = LogLevel.info
234
elif record.levelno < logging.WARNING:
235
level = LogLevel.warn
237
level = LogLevel.error
238
event(self.logger, level, **kw)
245
"DEBUG": LogLevel.debug,
246
"INFO": LogLevel.info,
247
"WARNING": LogLevel.warn,
248
"ERROR": LogLevel.error,
249
"CRITICAL": LogLevel.error
252
def __call__(self, event):
253
if "log_id" in event:
254
# don't play ping pong with the LegacyLogObserver
256
if isinstance(event["message"], basestring):
257
msg = event["message"]
259
msg = "\n".join(event["message"])
260
ev = Event(msg, module="virtualbricks.log.legacy")
262
fail = event.get("failure")
264
self.logger.failure(ev, log_failure=fail, **event)
230
level = self.levels.get(record.levelname, LogLevel.info)
231
self.logger.emit(level, msg, **kw)
266
self.logger.error(ev, **event)
268
self.logger.info(ev, **event)