⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logconf.py

📁 xen虚拟机源代码安装包
💻 PY
📖 第 1 页 / 共 5 页
字号:
        ltype = self.getPropValue("logtype")        file.write("logtype=%s\n" % ltype)        file.write("args=('%s', '%s', '%s')\n\n" % (app, dll, ltype))    def readConfig(self, sectname):        prop = AppNameProperty(self.config.get(sectname, "appname"))        self.dict["appname"] = prop        prop = DLLNameProperty(self.config.get(sectname, "dllname"))        self.dict["dllname"] = prop        prop = LogTypeProperty(self.config.get(sectname, "logtype"))        self.dict["logtype"] = prop        self.propnames.extend(["appname", "dllname", "logtype"])# -- logger properties and proxiesclass ChannelProperty(Property):    def __init__(self, value=None):        Property.__init__(self, "channel", "Name", value)class HandlerProperty(Property):    def __init__(self, config, value=None):        self.config = config        Property.__init__(self, "handler", "Handlers", value)    def getChoices(self):        return self.config.getHandlerChoice()class FilterProperty(Property):    def __init__(self, config, value=None):        self.config = config        Property.__init__(self, "filter", "Filters", value)    def getChoices(self):        return self.config.getFilterChoice()class ParentProperty(Property):    def __init__(self, config, value=None):        self.config = config        Property.__init__(self, "parent", "Parent", value)    def getChoices(self):        loggers = self.config.getLoggerChoice()        nm = self.dict["name"].getValueText()        #can't be own parent...        return filter(lambda x,nm=nm: x[0] != nm, loggers)    def getValueText(self):        if self.dict.has_key("root"):            return ""        pn = Property.getValueText(self)        rv = ""        while pn != "(root)":            parent = self.config.getLogger(pn)            rv = parent.getPropValue("channel") + "." + rv            pn = parent.getProp("parent").value        return rv[:-1]class PropagateProperty(Property):    def __init__(self, config, value=None):        self.config = config        Property.__init__(self, "propagate", "Propagate", value)    def getChoices(self):        return BOOLEAN_VALUESclass LoggerProxy(PropertyHolder):    def __init__(self, config, dict):        self.config = config        PropertyHolder.__init__(self, dict)        prop = ChannelProperty(dict.get("channel", ""))        self.dict["channel"] = prop        prop = NameProperty(dict.get("name", ""))        self.dict["name"] = prop        prop = HandlerProperty(config, dict.get("handler", []))        self.dict["handler"] = prop        prop = LevelProperty(dict.get("level", "NOTSET"))        self.dict["level"] = prop        prop = PropagateProperty(self.config, dict.get("propagate", "1"))        self.dict["propagate"] = prop        prop = ParentProperty(config, dict.get("parent", "(root)"))        prop.dict = self.dict        self.dict["parent"] = prop        self.propnames = ["parent", "channel", "level", "propagate", "handler"]        self.onChannelChanged = None        self.deleted = 0    def isReadonly(self, name):        return (name in ["channel", "parent", "propagate"]) and self.dict.has_key("root")    def getQualifiedName(self):        pt = self.getProp("parent").getValueText()        nm = self.getPropValue("channel")        if pt:            pn =  pt + "." + nm        else:            pn = nm            if pn == "":                pn = "(root)"        return pn    def setPropValue(self, name, value):        PropertyHolder.setPropValue(self, name, value)        if (name == "channel"):            nm = self.getPropValue("name")            if self.onChannelChanged:                self.onChannelChanged(nm, value)    def writeConfig(self, file):        if self.dict.has_key("root"):            name = "root"        else:            name = self.getPropValue("name")        file.write("[logger_%s]\n" % name)        file.write("level=%s\n" % self.getPropValue("level"))        file.write("propagate=%s\n" % self.getPropValue("propagate"))        file.write("channel=%s\n" % self.getPropValue("channel"))        file.write("parent=%s\n" % self.getPropValue("parent"))        file.write("qualname=%s\n" % self.getQualifiedName())        file.write("handlers=%s\n\n" %  string.join(self.getPropValue("handler"), ","))# -- logging configurationclass LoggingConfig(ConfigParser.ConfigParser):    def __init__(self, defaults=None):        ConfigParser.ConfigParser.__init__(self, defaults)        self.formatters = {}        self.handlers = {}        self.loggers = {}#        self.filters = {}        #create root logger        d = { "name": "(root)", "root": 1, "parent": "" }        self.loggers["(root)"] = LoggerProxy(self, d)    def read(self, fn):        ConfigParser.ConfigParser.read(self, fn)        llist = self.get("loggers", "keys")        llist = string.split(llist, ",")        llist.remove("root")        sectname = "logger_root"        log = self.loggers["(root)"]        log.setPropValue("level", self.get(sectname, "level"))        hlist = self.get(sectname, "handlers")        hlist = string.split(hlist, ",")        log.setPropValue("handler", hlist)        for log in llist:            sectname = "logger_%s" % log            hlist = self.get(sectname, "handlers")            hlist = string.split(hlist, ",")            d = {                "name"      : log,                "level"     : self.get(sectname, "level"),                "channel"   : self.get(sectname, "channel"),                "parent"    : self.get(sectname, "parent"),                "propagate" : self.get(sectname, "propagate"),                "handler"   : hlist,            }            self.loggers[log] = LoggerProxy(self, d)        hlist = self.get("handlers", "keys")        if len(hlist):            hlist = string.split(hlist, ",")            for hand in hlist:                sectname = "handler_%s" % hand                klass = self.get(sectname, "class")                if klass[:9] == "handlers.":                    klass = klass[9:]                d = {                    "name"      : hand,                    "class"     : "%sProxy" % klass,                    "level"     : self.get(sectname, "level"),                    "formatter" : self.get(sectname, "formatter"),                }                hobj = HandlerProxy(self, d)                hobj.__class__ = eval("%sProxy" % klass)                hobj.readConfig(sectname)                self.handlers[hand] = hobj        flist = self.get("formatters", "keys")        if len(flist):            flist = string.split(flist, ",")            for form in flist:                sectname = "formatter_%s" % form                d = {                    "name"   : form,                    "format" : self.get(sectname, "format", 1),                    "datefmt" : self.get(sectname, "datefmt", 1),                }                self.formatters[form] = FormatterProxy(self, d)#        flist = self.get("filters", "keys")#        if len(flist):#            flist = string.split(flist, ",")#            for filt in flist:#                sectname = "filter_%s" % filt#                d = {#                    "name"   : filt,#                    "lname"  : self.get(sectname, "lname", 1),#                }#                self.filters[filt] = FilterProxy(self, d)    def getFormatter(self, name):        if name:            fmt = self.formatters[name]        else:            n = len(self.formatters.keys()) + 1            name = "form%02d" % n            fmt = FormatterProxy(self, {"name": name})            self.formatters[name] = fmt        return fmt    def getHandler(self, name):        if name:            hand = self.handlers[name]        else:            n = len(self.handlers.keys()) + 1            name = "hand%02d" % n            hand = StreamHandlerProxy(self, {"name": name})            self.handlers[name] = hand        return hand    def getLogger(self, name):        if name:            log = self.loggers[name]        else:            n = len(self.loggers.keys()) + 1            name = "log%02d" % n            log = LoggerProxy(self, {"name": name, "channel": name})            self.loggers[name] = log        return log    def getFormatterChoice(self):        values = []        keys = self.formatters.keys()        keys.sort()        for f in keys:            values.append((f, f))        return tuple(values)    def getHandlerChoice(self):        values = []        keys = self.handlers.keys()        keys.sort()        for f in keys:            values.append((f, f))        return tuple(values)    def getFilterChoice(self):        values = []        keys = self.filters.keys()        keys.sort()        for f in keys:            values.append((f, f))        return tuple(values)    def getLoggerChoice(self):        values = []        keys = self.loggers.keys()        keys.sort()        for f in keys:            values.append((f, f))        return tuple(values)    def getLoggers(self):        return self.loggers.values()    def getHandlers(self):        return self.handlers.values()    def getFormatters(self):        return self.formatters.values()    def formatterIsUsed(self, name):        rv = None        for h in self.handlers.keys():            if self.handlers[h].getPropValue("formatter") == name:                rv = h                break        return rv    def handlerIsUsed(self, name):        rv = None        for log in self.loggers.keys():            if name in self.loggers[log].getPropValue("handler"):                rv = log                break        return rv    def removeFormatter(self, name):        del self.formatters[name]    def removeHandler(self, name):        del self.handlers[name]    def removeLogger(self, name):        del self.loggers[name]    def save(self, fn):        #needed because 1.5.2 ConfigParser should be supported        file = open(fn, "w")        #Write out the keys        loggers = self.loggers.keys()        loggers.remove("(root)")        loggers = filter(lambda x, d=self.loggers: not d[x].deleted, loggers)        loggers.sort()        list = ["root"]        list.extend(loggers)        file.write("[loggers]\nkeys=%s\n\n" % string.join(list, ","))        handlers = self.handlers.keys()        handlers.sort()        file.write("[handlers]\nkeys=%s\n\n" % string.join(handlers, ","))        formatters = self.formatters.keys()        formatters.sort()        file.write("[formatters]\nkeys=%s\n\n" % string.join(formatters, ","))        #write out the root logger properties        log = self.loggers["(root)"]        log.writeConfig(file)        #write out other logger properties        for log in loggers:            log = self.loggers[log]            log.writeConfig(file)        #write out handler properties        for hand in handlers:            hand = self.handlers[hand]            hand.writeConfig(file)        #write out formatter properties        for form in formatters:            form = self.formatters[form]            form.writeConfig(file)        file.close()root = Nonedef onClose():    if _popup:        _popup.withdraw()    root.destroy()def main():    global root    root=Tk()    cfg = Configurator(root)    cfg.pack(side=LEFT, fill=BOTH, expand=1)    root.protocol("WM_DELETE_WINDOW", onClose)    root.mainloop()if __name__ == "__main__":    main()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -