2012-08-05 50 views
4

我試圖修改我的Python日誌記錄器的輸出以顯示進程ID。修改Python日誌記錄器的輸出格式

兩種方法我試過:

import logging 
FORMAT = "%(asctime)s %(process)s %(thread)s: %(message)s" 
logging.basicConfig(format=FORMAT) 
logger = logging.getLogger('my_logger') 

import logging 
FORMAT = "%(asctime)s %(process)s %(thread)s: %(message)s" 
logger = logging.getLogger('my_logger') 
handler = logger.handlers[0] 
handler.setFormatter(logging.Formatter(FORMAT)) 

納達。第一個不會改變格式。當我嘗試訪問logger.handlers[0]時,第二個引發索引錯誤。

我不想寫我自己的處理程序,只需修改默認處理程序的格式。有沒有簡單的方法?

回答

4

第一個改變了

logging.<severity>("message") 

格式換句話說,當您將第一個樣品中的格式,你並不需要獲得獨立的記錄器實例,你可以使用logging本身。這就是說,如果您使用的任何其他模塊也使用logging,它可能會產生不必要的影響。

如果你想改變你的獨立的記錄器,你可以使用下面的示例中的格式:

from logging import StreamHandler, Formatter 

FORMAT = '%(asctime)-15s %(levelname)-6s %(message)s' 
DATE_FORMAT = '%b %d %H:%M:%S' 
formatter = Formatter(fmt=FORMAT, datefmt=DATE_FORMAT) 
handler = StreamHandler() 
handler.setFormatter(formatter) 
logger = logging.getLogger(__name__) 
logger.addHandler(handler) 
+0

你有什麼導入得到格式化的工作?我從格式化程序導入格式化程序並得到NameError:名稱'格式化程序'未定義 – Yarin 2012-08-05 20:33:09

+0

添加到上面的代碼段。 – favoretti 2012-08-05 20:34:20

+0

成功! StreamHandler配方爲我工作,謝謝favoretti – Yarin 2012-08-05 20:38:52