Source

python-bitbucket / loggers / handler.py

Full commit
# -*- coding: utf-8 -*-
import logging
import traceback
from api import API

class BitbucketHandler(logging.Handler):
    def __init__(self):
        logging.Handler.__init__(self)
        self.include_html = False
        
    def emit(self, record):
        try:
	    request = record.request
	    title = '%s (%s IP): %s' % (record.levelname, (request.META.get('REMOTE_ADDR') or 'EXTERNAL'), record.getMessage())
	    filter = get_exception_reporter_filter(request)
	    request_repr = filter.get_request_repr(request)
	except Exception:
	    title = '%s: %s' % (record.levelname, record.getMessage())
	    request = None
	    request_repr = "Request repr() unavailable."
	title = title.replace("\n", "").replace("\r", "")
	if record.exc_info:
	    exc_info = record.exc_info
	    stack_trace = "\n".join(traceback.format_exception(*record.exc_info))
	else:
	    exc_info = (None, record.getMessage(), None)
	    stack_trace = 'No stack trace available'
	content = "%s\n\n%s" % (stack_trace, request_repr)
	api = API("kveroneau", "**password**")
	issue = api.new_issue(self, "kveroneau", "python-bitbucket")
	issue.title = title
	issue.content = content
	json = issue.save()