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

📄 logconf.py

📁 xen虚拟机源代码安装包
💻 PY
📖 第 1 页 / 共 5 页
字号:
        label = Label(self, text="Filters:")        label.grid(row=0, column=0, sticky='w')        self.slist = ScrollList(self, height=4, background='white')        self.slist.list.bind('<ButtonRelease-1>', self.onListChange)        self.slist.grid(row=1, column=0, sticky="nsew")        self.adu = ADUPanel(self)        self.adu.grid(row=2, column=0, sticky="ew")        label = Label(self, text="Properties of selected filter:")        label.grid(row=3, column=0, sticky='w')        self.pe = PropertyEditor(self, height=60, borderwidth=1)        self.pe.grid(row=4, column=0, sticky='nsew')        self.columnconfigure(0, weight=1)        self.rowconfigure(1, weight=1)        self.rowconfigure(4, weight=1)    def setConfig(self, config):        self.config = config        #populate list of filters        flist = config.getFilters()        flist.sort(sortn)        self.slist.list.delete(0, END)        self.pe.body.clear()        for filt in flist:            self.slist.list.insert(END, filt.getPropValue("name"))    def onAdd(self):        self.pe.body.hideControls()        filt = self.config.getFilter(None)        self.slist.list.insert(END, filt.getProp("name").getValueText())        self.slist.list.select_clear(0, END)        i = self.slist.list.size()        self.slist.list.select_set(i - 1)        self.pe.setPropertyHolder(filt)    def onDelete(self):        self.pe.body.hideControls()        items = self.slist.list.curselection()        if not len(items):            showerror("No Item Selected", "You haven't selected anything to delete")        else:            name = self.slist.list.get(int(items[0]))            h = self.config.filterIsUsed(name)            if h:                showerror("Filter in use",                          "The filter '%s' is being used by '%s'"\                          ", so it cannot be deleted." % (                          name, h))            else:                self.config.removeFilter(name)                self.slist.list.delete(items)                self.pe.body.clear()    def onUpdate(self):        self.pe.body.hideControls()    def onListChange(self, event):        self.pe.body.hideControls()        items = self.slist.list.curselection()        name = self.slist.list.get(int(items[0]))        filt = self.config.getFilter(name)        self.pe.setPropertyHolder(filt)class ConfigPanel(Frame):    def __init__(self, parent):        Frame.__init__(self, parent)        self.parent = parent        self.load = Button(self, text="Load...", command=parent.onLoad)        self.load.pack(side=LEFT)        self.save = Button(self, text="Save", command=parent.onSave)        self.save.pack(side=LEFT)        self.save = Button(self, text="Save as...", command=parent.onSaveAs)        self.save.pack(side=LEFT)        self.reset = Button(self, text="Reset", command=parent.onReset)        self.reset.pack(side=RIGHT)class Configurator(Frame):    def __init__(self, parent):        Frame.__init__(self, parent)        self.parent = parent        self.llist = LoggerPanel(self)        self.llist.grid(row=0, column=0, rowspan=2, sticky='nsew')        spacer = Canvas(self, width=2, highlightthickness=0)        spacer.grid(row=0, column=1, rowspan=2, sticky='ns')        self.hlist = HandlerPanel(self)        self.hlist.grid(row=0, column=2, sticky='nsew')        self.flist = FormatterPanel(self)        self.flist.grid(row=1, column=2, sticky='nsew')        self.cfg = ConfigPanel(self)        self.cfg.grid(row=2, column=0, columnspan=2, sticky='w')        self.filename = None        self.rowconfigure(0, weight=1)        self.columnconfigure(0, weight=1)        self.columnconfigure(2, weight=1)        label = Label(self, text="Copyright (C) 2002 Vinay Sajip. All rights reserved.", foreground='brown')        label.grid(row=3, column=0, columnspan=2, sticky='w')        if len(sys.argv) > 1:            fn = sys.argv[1]            try:                self.loadFile(fn)            except Exception, e:                print e                raise        else:            self.onReset(0)        self.setTitle()        self.focus_set()    def setTitle(self):        if self.filename:            s = os.path.split(self.filename)[1]        else:            s = "untitled"        self.winfo_toplevel().title("%s - Python Logging Configurator V%s" % (s, __version__))    def loadFile(self, fn):        self.config = LoggingConfig()        self.config.read(fn)        self.filename = fn        self.llist.setConfig(self.config)        self.hlist.setConfig(self.config)        self.flist.setConfig(self.config)        self.setTitle()    def onLoad(self):        fn = askopenfilename(title="Choose configuration file", filetypes=[("Logging configurations", "*.ini"), ("All files", "*.*")])        if fn:            self.loadFile(fn)    def onSaveAs(self):        if self.filename:            fn = os.path.split(self.filename)[1]        else:            fn = DEFAULT_FILENAME        fn = asksaveasfilename(title="Save configuration as", initialfile=fn, filetypes=[("Logging configurations", "*.ini"), ("All files", "*.*")])        if fn:            self.config.save(fn)            self.filename = fn            self.setTitle()    def onSave(self):        if not self.filename:            self.onSaveAs()        else:            self.config.save(self.filename)    def onReset(self, confirm=1):        if not confirm:            doit = 1        else:            doit = askyesno("Reset", "Are you sure you want to reset?")        if doit:            self.config = LoggingConfig()            self.llist.setConfig(self.config)            self.hlist.setConfig(self.config)            self.flist.setConfig(self.config)            self.setTitle()# -- general propertiesclass NameProperty(Property):    def __init__(self, value=None):        Property.__init__(self, "name", "Name", value)class LevelProperty(Property):    def __init__(self, value=None):        Property.__init__(self, "level", "Level", value)    def getChoices(self):        return LOGGING_LEVELS# -- formatter propertiesclass FormatProperty(Property):    def __init__(self, value=None):        Property.__init__(self, "format", "Format", value)class DateFormatProperty(Property):    def __init__(self, value=None):        Property.__init__(self, "datefmt", "Date Format", value)class FormatterProxy(PropertyHolder):    def __init__(self, config, dict):        self.config = config        PropertyHolder.__init__(self, dict)        prop = NameProperty(dict.get("name", ""))        self.dict["name"] = prop        prop = FormatProperty(dict.get("format", "%(asctime)s %(levelname)s %(message)s"))        self.dict["format"] = prop        prop = DateFormatProperty(dict.get("datefmt", ""))        self.dict["datefmt"] = prop        self.propnames = ["name", "format", "datefmt"]    def isReadonly(self, name):        return name == "name"    def writeConfig(self, file):        file.write("[formatter_%s]\n" % self.getPropValue("name"))        file.write("format=%s\n" % self.getPropValue("format"))        file.write("datefmt=%s\n\n" % self.getPropValue("datefmt"))# -- filter propertiesclass LoggerNameProperty(Property):    def __init__(self, value=None):        Property.__init__(self, "lname", "Name", value)class FilterProxy(PropertyHolder):    def __init__(self, config, dict):        self.config = config        PropertyHolder.__init__(self, dict)        prop = NameProperty(dict.get("name", ""))        self.dict["name"] = prop        prop = LoggerNameProperty(dict.get("lname", ""))        self.dict["lname"] = prop        self.propnames = ["name", "lname"]    def isReadonly(self, name):        return name == "name"    def writeConfig(self, file):        file.write("[filter_%s]\n" % self.getPropValue("name"))        file.write("lname=%s\n" % self.getPropValue("lname"))# -- handler properties and proxiesclass HandlerTypeProperty(Property):    def __init__(self, value=None):        Property.__init__(self, "class", "Type", value)    def getChoices(self):        return HANDLER_TYPESclass FormatterProperty(Property):    def __init__(self, config, value=None):        self.config = config        Property.__init__(self, "formatter", "Formatter", value)    def getChoices(self):        return self.config.getFormatterChoice()class HandlerProxy(PropertyHolder):    def __init__(self, config, dict):        self.config = config        PropertyHolder.__init__(self, dict)        prop = NameProperty(dict.get("name", ""))        self.dict["name"] = prop        prop = HandlerTypeProperty(dict.get("class", "StreamHandlerProxy"))        self.dict["class"] = prop        prop = FormatterProperty(self.config, dict.get("formatter", ""))        self.dict["formatter"] = prop        prop = LevelProperty(dict.get("level", "NOTSET"))        self.dict["level"] = prop        self.propnames = ["name", "class", "level", "formatter"]    def isReadonly(self, name):        return (name == "name")    def setPropValue(self, name, value):        PropertyHolder.setPropValue(self, name, value)        if (name == "class"):   #morph type of handler            #print "try morph -> %s" % value            try:                klass = eval(value)            except Exception, e:                print e                klass = None            if klass:                n = self.getPropValue("name")                d = {                        "name": n,                        "class": value,                        "formatter": self.getPropValue("formatter"),                        "level": self.getPropValue("level"),                        }                newhand = klass(self.config, d)                self.config.handlers[n] = newhand   #FIXME encapsulation                if self.onPropListChanged:                    self.onPropListChanged(newhand)    def writeConfig(self, file):        file.write("[handler_%s]\n" % self.getPropValue("name"))        s = self.getProp("class").getValueText()        if not s in ["StreamHandler", "FileHandler"]:            s = "handlers." + s        file.write("class=%s\n" % s)        file.write("level=%s\n" % self.getPropValue("level"))        file.write("formatter=%s\n" % self.getPropValue("formatter"))class StreamProperty(Property):    def __init__(self, config, value=None):        self.config = config        Property.__init__(self, "stream", "Stream", value)    def getChoices(self):        return OUTPUT_STREAMSclass StreamHandlerProxy(HandlerProxy):    def __init__(self, config, dict):        HandlerProxy.__init__(self, config, dict)        prop = StreamProperty(self.config, dict.get("stream", "sys.stderr"))        self.dict["stream"] = prop        self.propnames.append("stream")    def writeConfig(self, file):        HandlerProxy.writeConfig(self, file)        file.write("stream=%s\n" % self.getPropValue("stream"))        file.write("args=(%s,)\n\n" % self.getPropValue("stream"))    def readConfig(self, sectname):        prop = StreamProperty(self.config, self.config.get(sectname, "stream"))        self.dict["stream"] = prop        self.propnames.append("stream")class FilenameProperty(Property):    def __init__(self, value=None):        Property.__init__(self, "filename", "File name", value)class ModeProperty(Property):    def __init__(self, value=None):        Property.__init__(self, "mode", "Mode", value)    def getChoices(self):        return FILE_MODESclass MaxSizeProperty(Property):    def __init__(self, value=None):        Property.__init__(self, "maxsize", "Maximum Size (bytes)", value)class BackupCountProperty(Property):    def __init__(self, value=None):        Property.__init__(self, "backcount", "Backup Count", value)class FileHandlerProxy(HandlerProxy):    def __init__(self, config, dict):        HandlerProxy.__init__(self, config, dict)        prop = FilenameProperty(dict.get("filename", "python.log"))        self.dict["filename"] = prop        prop = ModeProperty(dict.get("mode", "a"))        self.dict["mode"] = prop        self.propnames.extend(["filename", "mode"])    def writeConfig(self, file):        HandlerProxy.writeConfig(self, file)        fn = self.getPropValue("filename")        file.write("filename=%s\n" % fn)

⌨️ 快捷键说明

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