python logging类库使用例子
一、简单使用 复制代码 代码如下: def TestLogBasic(): import logging logging.basicConfig(filename = 'log.txt',filemode = 'a',level = logging.NOTSET,format = '%(asctime)s - %(levelname)s: %(message)s') logging.debug('this is a message') logging.info("this is a info") logging.disable(30)#logging.WARNING logging.warning("this is a warnning") logging.critical("this is a critical issue") logging.error("this is a error") logging.addLevelName(88,"MyCustomError") logging.log(88,"this is an my custom error") try: raise Exception('this is a exception') except: logging.exception( 'exception') logging.shutdown() TestLogBasic() 说明:(此实例为最简单的用法,用来将log记录到log文件中) 1)logging.basicConfig()中定义默认的log到log.txt,log文件为append模式,处理所有的level大于logging.NOTSET的logging,log的格式定义为'%(asctime)s - %(levelname)s: %(message)s'; 2)使用logging.debug()...等来log相应level的log; 3)使用logging.disable()来disable某个logging level; 4)使用logging.addLevelName增加自定义的logging level; 5)使用logging.log来log自定义的logging level的log; 输出的text的log如下: 复制代码 代码如下: 2011-01-18 10:02:45,415 - DEBUG: this is a message 2011-01-18 10:02:45,463 - INFO: this is a info 2011-01-18 10:02:45,463 - CRITICAL: this is a critical issue 2011-01-18 10:02:45,463 - ERROR: this is a error 2011-01-18 10:02:45,463 - MyCustomError: this is an my custom error 2011-01-18 10:02:45,463 - ERROR: exception Traceback (most recent call last): File "testlog.py",line 15,in TestLogBasic raise Exception('this is a exception') Exception: this is a exception 二、logging的level 复制代码 代码如下: #logging level #logging.NOTSET 0 #logging.DEBUG 10 #logging.INFO 20 #logging.WARNING 30 #logging.ERROR 40 #logging.CRITICAL 50 logging的level对应于一个int,例如10,20...用户可以自定义logging的level。 可以使用logging.setLevel()来指定要处理的logger级别,例如my_logger.setLevel(logging.DEBUG)表示只处理logging的level大于10的logging。 三、Handlers Handler定义了log的存储和显示方式。 NullHandler不做任何事情。 StreamHandler实例发送错误到流(类似文件的对象)。 当然还有一个logging.config模块提供了配置功能。 四、FileHandler + StreamHandler 复制代码 代码如下: def TestHanderAndFormat(): import logging logger = logging.getLogger("simple") logger.setLevel(logging.DEBUG) # create file handler which logs even debug messages fh = logging.FileHandler("simple.log") fh.setLevel(logging.DEBUG) # create console handler with a higher log level ch = logging.StreamHandler() ch.setLevel(logging.ERROR) # create formatter and add it to the handlers formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") ch.setFormatter(formatter) fh.setFormatter(formatter) # add the handlers to logger logger.addHandler(ch) logger.addHandler(fh) # "application" code TestHanderAndFormat() 说明:(此实例同时使用FileHandler和StreamHandler来实现同时将log写到文件和console) 1)使用logging.getLogger()来新建命名logger; 2)使用logging.FileHandler()来生成FileHandler来将log写入log文件,使用logger.addHandler()将handler与logger绑定; 3)使用logging.StreamHandler()来生成StreamHandler来将log写到console,使用logger.addHandler()将handler与logger绑定; 4)使用logging.Formatter()来构造log格式的实例,使用handler.setFormatter()来将formatter与handler绑定; 运行结果 simple.txt 复制代码 代码如下: 2011-01-18 11:25:57,026 - simple - DEBUG - debug message 2011-01-18 11:25:57,072 - simple - INFO - info message 2011-01-18 11:25:57,072 - simple - WARNING - warn message 2011-01-18 11:25:57,072 - simple - ERROR - error message 2011-01-18 11:25:57,072 - simple - CRITICAL - critical message console 复制代码 代码如下: 2011-01-18 11:25:57,072 - simple - CRITICAL - critical message 五、RotatingFileHandler 复制代码 代码如下: def TestRotating(): import glob import logging import logging.handlers LOG_FILENAME = 'logging_rotatingfile_example.out' # Set up a specific logger with our desired output level # Add the log message handler to the logger my_logger.addHandler(handler) # Log some messages # See what files are created for filename in logfiles: 说明: RotatingFileHandler指定了单个log文件的size的最大值和log文件的数量的最大值,如果文件大于最大值,将分割为多个文件,如果log文件的数量多于最多个数,最老的log文件将被删除。例如此例中最新的log总是在logging_rotatingfile_example.out,logging_rotatingfile_example.out.5中包含了最老的log。 运行结果: 复制代码 代码如下: logging_rotatingfile_example.out logging_rotatingfile_example.out.1 logging_rotatingfile_example.out.2 logging_rotatingfile_example.out.3 logging_rotatingfile_example.out.4 logging_rotatingfile_example.out.5 六、使用fileConfig来使用logger 复制代码 代码如下: import logging import logging.config logging.config.fileConfig("logging.conf") # create logger # "application" code logging.conf文件如下: 复制代码 代码如下: [loggers] keys=root,simpleExample [handlers] [formatters] [logger_root] [logger_simpleExample] [handler_consoleHandler] [formatter_simpleFormatter] 运行结果: 复制代码 代码如下: 2005-03-19 15:38:55,977 - simpleExample - DEBUG - debug message 2005-03-19 15:38:55,979 - simpleExample - INFO - info message 2005-03-19 15:38:56,054 - simpleExample - WARNING - warn message 2005-03-19 15:38:56,055 - simpleExample - ERROR - error message 2005-03-19 15:38:56,130 - simpleExample - CRITICAL - critical message (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |