它可以像伐木一樣簡單到StringIO
對象:
import logging
try:
from cStringIO import StringIO # Python 2
except ImportError:
from io import StringIO
log_stream = StringIO()
logging.basicConfig(stream=log_stream, level=logging.INFO)
logging.info('hello world')
logging.warning('be careful!')
logging.debug("you won't see this")
logging.error('you will see this')
logging.critical('critical is logged too!')
print(log_stream.getvalue())
輸出
INFO:root:hello world
WARNING:root:be careful!
ERROR:root:you will see this
CRITICAL:root:critical is logged too!
如果你想記錄只在水平這些消息WARN ,INFO和ERROR,你可以使用過濾器來完成。 LevelFilter
下面檢查每個日誌記錄的級別沒有,只允許所需的水平(S)的那些記錄:
import logging
try:
from cStringIO import StringIO # Python 2
except ImportError:
from io import StringIO
class LevelFilter(logging.Filter):
def __init__(self, levels):
self.levels = levels
def filter(self, record):
return record.levelno in self.levels
log_stream = StringIO()
logging.basicConfig(stream=log_stream, level=logging.NOTSET)
logging.getLogger().addFilter(LevelFilter((logging.INFO, logging.WARNING, logging.ERROR)))
logging.info('hello world')
logging.warning('be careful!')
logging.debug("you won't see this")
logging.error('you will see this')
logging.critical('critical is no longer logged!')
print(log_stream.getvalue())
輸出
INFO:root:hello world
WARNING:root:be careful!
ERROR:root:you will see this
你能解釋一下什麼錯誤? – Navneet
在這裏看到答案:http://stackoverflow.com/a/9534960/459745 –