最近在学习openstack时,发现其大部分组件都使用了类似的框架结构,基本上是由一些开源模块搭建起来的,为了能更好地学习openstack,需要对这些开源模块进行深入学习,下面就先由logging开始吧。
logging,顾名思义,是用来做日志处理的模块,其功能非常强大,不仅能将日志写入文件,还能将日志以http/tcp/udp协议的对外发送。
1 LOG_FILE = ‘tst.log‘ 2 3 handler = logging.handlers.RotatingFileHandler(LOG_FILE, maxBytes=1024 * 1024, backupCount=5) 4 fmt = ‘%(asctime)s - %(filename)s:%(lineno)s - %(name)s - %(message)s‘ 5 6 formatter = logging.Formatter(fmt) 7 handler.setFormatter(formatter) 8 logger = logging.getLogger(‘test‘) 9 logger.addHandler(handler) 10 logger.setLevel(logging.DEBUG) 11 12 handler2 = logging.StreamHandler(sys.stderr) 13 handler2.setFormatter(formatter) 14 15 logger = logging.getLogger(‘test.1‘) #必须test.x 才会与test共享配置 16 handler2.setLevel(logging.INFO) 17 logger.addHandler(handler2) 18 19 logger.info(‘first info message‘) 20 #logger.removeHandler(handler2) 21 logger.debug(‘first debug message‘)
formatter:设置日志输出格式
handler:设置日志输出方式,比如是否支持备份等等
logger:一旦创建,对于python解释器来说是一个全局对象:
文件A: logging.getLogger(‘test‘)
文件B: logging.getLogger(‘test‘) ---->此处取出的logger对象和文件A具有相同的配置,为同一个对象
logging支持读取配置文件进行初始化,一般项目中都喜欢这种方式:
import logging import logging.config logging.config.fileConfig("logging.conf") logger = logging.getLogger("simpleExample") logger.debug("debug message") logger.info("info message") logger.warn("warn message") logger.error("error message") logger.critical("critical message")
[loggers] keys=root,simpleExample [handlers] keys=consoleHandler [formatters] keys=simpleFormatter [logger_root] level=DEBUG handlers=consoleHandler [logger_simpleExample] level=DEBUG handlers=consoleHandler qualname=simpleExample propagate=0 [handler_consoleHandler] class=StreamHandler level=DEBUG formatter=simpleFormatter args=(sys.stdout,) [formatter_simpleFormatter] format=%(asctime)s - %(name)s - %(filename)s:%(lineno)s - %(levelname)s - %(message)s datefmt=
Python Logging模块,布布扣,bubuko.com
原文:http://www.cnblogs.com/persevere/p/3611635.html