我想了解python日誌記錄的工作方式。python日誌記錄和處理程序的使用
我知道這是一個適用於整個正在運行的解釋器的單例實例。
我有這樣的功能:
def setup_logging(options=None):
'''setup the logger and return it'''
logging.basicConfig(level=logging.WARNING,
format='%(levelname)s: %(message)s',
filename='/tmp/pluser.log')
logger = logging.getLogger('pluser')
console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
print(console.level)
logger.addHandler(console)
return logger
,我稱之爲使用這樣的:
console = setup_logging(options)
console.debug('Initializing database')
connect_to_db()
console.debug('Database initialized')
(這是做更多的日誌記錄到不同的地方準備)現在
,「控制檯「是一個」logging.Logger「實例。 它有一個StreamHandler。該流處理程序的級別爲10(即logging.DEBUG)。 但是,StreamHandler似乎沒有得到消息,因爲事物只能在console.warning,error或critical中打印到控制檯(應該有stderr和stdout)。
因此,我明顯錯過了記錄器與系統或StreamHandler進行交互的方式。
我的目標是當StreamHandler的級別調試時,所有內容都打印到控制檯,但我也想知道爲什麼這不起作用。
我添加了「logging.StreamHandler(sys.stdout),然後它在連續打印3次,如果我做console.warning,但仍然不打印在調試。 – qkslvrwolf 2013-04-09 16:47:23