Python Logging模塊

  最近在學習openstack時,發現其大部分組件都使用了相似的框架結構,基本上是由一些開源模塊搭建起來的,爲了能更好地學習openstack,須要對這些開源模塊進行深刻學習,下面就先由logging開始吧。python

  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:設置日誌輸出格式tcp

  handler:設置日誌輸出方式,好比是否支持備份等等學習

  logger:一旦建立,對於python解釋器來講是一個全局對象: spa

      文件A: logging.getLogger('test')debug

      文件B: logging.getLogger('test')  ---->此處取出的logger對象和文件A具備相同的配置,爲同一個對象日誌

  logging支持讀取配置文件進行初始化,通常項目中都喜歡這種方式:code

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=
相關文章
相關標籤/搜索