Exemple #1
0
def configure_handler(handler, log, level):
    if handler.name:
        remove_handlers(log, handler.name)
    handler.setLevel(level)
    log.addHandler(handler)
    # need to reduce the logger's level down to the
    # handler's level or else the handler won't
    # get those messages
    if log.level > level:
        log.setLevel(level)
    return handler
Exemple #2
0
def configure_handler(handler, log, level):
    if handler.name:
        remove_handlers(log, handler.name)
    handler.setLevel(level)
    log.addHandler(handler)
    # need to reduce the logger's level down to the
    # handler's level or else the handler won't
    # get those messages
    if log.level > level:
        log.setLevel(level)
    return handler
Exemple #3
0
def configure_loggly_handler():
    if build_type.BUILD == 'dev':
        return
    level = logging.WARNING
    handler = get_loggly_handler(level=level, installation_id=conf.settings.installation_id,
                                 session_id=conf.settings.get_session_id())
    log = logging.getLogger("lbrynet")
    if handler.name:
        remove_handlers(log, handler.name)
    handler.setLevel(level)
    log.addHandler(handler)
    # need to reduce the logger's level down to the
    # handler's level or else the handler won't
    # get those messages
    if log.level > level:
        log.setLevel(level)
Exemple #4
0
def configure_loggly_handler():
    if build_type.BUILD == 'dev':
        return
    level = logging.ERROR
    handler = get_loggly_handler(level=level, installation_id=conf.settings.installation_id,
                                 session_id=conf.settings.get_session_id())
    log = logging.getLogger("lbrynet")
    if handler.name:
        remove_handlers(log, handler.name)
    handler.setLevel(level)
    log.addHandler(handler)
    # need to reduce the logger's level down to the
    # handler's level or else the handler won't
    # get those messages
    if log.level > level:
        log.setLevel(level)
Exemple #5
0

if __name__ == '__main__':
    import logging

    import twisted.python.log
    from twisted.internet import reactor, task
    from twisted.web.server import Site, NOT_DONE_YET

    # Set up logging
    log = logging.getLogger('twisted_routes')
    log.setLevel(logging.INFO)

    handler = logging.StreamHandler()
    handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))
    log.addHandler(handler)

    observer = twisted.python.log.PythonLoggingObserver(loggerName='twisted_routes')
    observer.start()

    # Create a Controller
    class Controller(object):

        def index(self, request):
            return '<html><body>Hello World!</body></html>'

        def docs(self, request, item):
            return '<html><body>Docs for %s</body></html>' % item.encode('utf8')

        def post_data(self, request):
            return '<html><body>OK</body></html>'
Exemple #6
0
def fileConfig(fname, defaults=None):
    """
    Read the logging configuration from a ConfigParser-format file.

    This can be called several times from an application, allowing an end user
    the ability to select from various pre-canned configurations (if the
    developer provides a mechanism to present the choices and load the chosen
    configuration).
    In versions of ConfigParser which have the readfp method [typically
    shipped in 2.x versions of Python], you can pass in a file-like object
    rather than a filename, in which case the file-like object will be read
    using readfp.
    """
    import ConfigParser

    cp = ConfigParser.ConfigParser(defaults)
    if hasattr(cp, "readfp") and hasattr(fname, "readline"):
        cp.readfp(fname)
    else:
        cp.read(fname)
    # first, do the formatters...
    flist = cp.get("formatters", "keys")
    if len(flist):
        flist = string.split(flist, ",")
        formatters = {}
        for form in flist:
            sectname = "formatter_%s" % form
            opts = cp.options(sectname)
            if "format" in opts:
                fs = cp.get(sectname, "format", 1)
            else:
                fs = None
            if "datefmt" in opts:
                dfs = cp.get(sectname, "datefmt", 1)
            else:
                dfs = None
            f = logging.Formatter(fs, dfs)
            formatters[form] = f
    # next, do the handlers...
    # critical section...
    logging._acquireLock()
    try:
        try:
            # first, lose the existing handlers...
            logging._handlers.clear()
            # now set up the new ones...
            hlist = cp.get("handlers", "keys")
            if len(hlist):
                hlist = string.split(hlist, ",")
                handlers = {}
                fixups = []  # for inter-handler references
                for hand in hlist:
                    try:
                        sectname = "handler_%s" % hand
                        klass = cp.get(sectname, "class")
                        opts = cp.options(sectname)
                        if "formatter" in opts:
                            fmt = cp.get(sectname, "formatter")
                        else:
                            fmt = ""
                        klass = eval(klass, vars(logging))
                        args = cp.get(sectname, "args")
                        args = eval(args, vars(logging))
                        h = apply(klass, args)
                        if "level" in opts:
                            level = cp.get(sectname, "level")
                            h.setLevel(logging._levelNames[level])
                        if len(fmt):
                            h.setFormatter(formatters[fmt])
                        # temporary hack for FileHandler and MemoryHandler.
                        if klass == logging.handlers.MemoryHandler:
                            if "target" in opts:
                                target = cp.get(sectname, "target")
                            else:
                                target = ""
                            if len(target):  # the target handler may not be loaded yet, so keep for later...
                                fixups.append((h, target))
                        handlers[hand] = h
                    except:  # if an error occurs when instantiating a handler, too bad
                        pass  # this could happen e.g. because of lack of privileges
                # now all handlers are loaded, fixup inter-handler references...
                for fixup in fixups:
                    h = fixup[0]
                    t = fixup[1]
                    h.setTarget(handlers[t])
            # at last, the loggers...first the root...
            llist = cp.get("loggers", "keys")
            llist = string.split(llist, ",")
            llist.remove("root")
            sectname = "logger_root"
            root = logging.root
            log = root
            opts = cp.options(sectname)
            if "level" in opts:
                level = cp.get(sectname, "level")
                log.setLevel(logging._levelNames[level])
            for h in root.handlers[:]:
                root.removeHandler(h)
            hlist = cp.get(sectname, "handlers")
            if len(hlist):
                hlist = string.split(hlist, ",")
                for hand in hlist:
                    log.addHandler(handlers[hand])
            # and now the others...
            # we don't want to lose the existing loggers,
            # since other threads may have pointers to them.
            # existing is set to contain all existing loggers,
            # and as we go through the new configuration we
            # remove any which are configured. At the end,
            # what's left in existing is the set of loggers
            # which were in the previous configuration but
            # which are not in the new configuration.
            existing = root.manager.loggerDict.keys()
            # now set up the new ones...
            for log in llist:
                sectname = "logger_%s" % log
                qn = cp.get(sectname, "qualname")
                opts = cp.options(sectname)
                if "propagate" in opts:
                    propagate = cp.getint(sectname, "propagate")
                else:
                    propagate = 1
                logger = logging.getLogger(qn)
                if qn in existing:
                    existing.remove(qn)
                if "level" in opts:
                    level = cp.get(sectname, "level")
                    logger.setLevel(logging._levelNames[level])
                for h in logger.handlers[:]:
                    logger.removeHandler(h)
                logger.propagate = propagate
                logger.disabled = 0
                hlist = cp.get(sectname, "handlers")
                if len(hlist):
                    hlist = string.split(hlist, ",")
                    for hand in hlist:
                        logger.addHandler(handlers[hand])
            # Disable any old loggers. There's no point deleting
            # them as other threads may continue to hold references
            # and by disabling them, you stop them doing any logging.
            # for log in existing:
            #     root.manager.loggerDict[log].disabled = 1
        except:
            import traceback

            ei = sys.exc_info()
            traceback.print_exception(ei[0], ei[1], ei[2], None, sys.stderr)
            del ei
    finally:
        logging._releaseLock()
# TODO: change all references to log.info to log.msg
#       and then remove this hack
log.info = log.msg
log.warn = log.err

APP_NAME = 'codehack'

# Create logger
if 0:
    # We use twisted's log (twistd)
    # so this one is not needed
    log = logging.getLogger(APP_NAME)
    hdlr = logging.StreamHandler()
    formatter = logging.Formatter(">> %(levelname)s %(message)s")
    hdlr.setFormatter(formatter)
    log.addHandler(hdlr)
    log.setLevel(logging.DEBUG)

def reverse_dict(dct):
    """Reverse the dictionary"""
    items = dct.items()
    items = map(list, items)
    map(list.reverse, items)
    return dict(items)
    
# Widget parenting
__parent = None

def set_default_parent(widget):
    """Set default parent widget, which is used for
    subsequent calls to GTK+"""