def sighandler_USR1(self, signum, frame): super(OpenStackCollectorDaemon, self).sighandler_USR1(signum, frame) loggerName = "zen.zenopenstack.twisted" twisted_log = logging.getLogger(loggerName) if twisted_log.getEffectiveLevel() == logging.DEBUG: twisted_log.setLevel(logging.ERROR) else: twisted_log.setLevel(logging.DEBUG)
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
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)
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)
shortName = filename.replace('.html', '') setattr(Mpdweb, 'child_' + shortName, f) Mpdweb.pages.append(shortName) for filename in ['MochiKit-custom1.js', 'jquery-1.4.3.min.js', 'mpd.js', 'ext-controls.js', 'ext-2.2', 'priv.js', ]: setattr(Mpdweb, 'child_'+filename, static.File(filename)) if __name__ == '__main__': logging.basicConfig(level=logging.INFO) parser = optparse.OptionParser() parser.add_option('-p', '--port', help='port to listen on', type='int', default=9003) parser.add_option('-d', '--debug', help='log all commands', action='store_true') opts, args = parser.parse_args() if opts.debug: log.setLevel(logging.DEBUG) twisted.python.log.startLogging(sys.stdout) reactor.listenTCP(opts.port, appserver.NevowSite(Mpdweb())) reactor.run()
else: request.setResponseCode(404) return '<html><head><title>404 Not Found</title></head>' \ '<body><h1>Not found</h1></body></html>' 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):
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()