我試圖破譯我的日誌中包含的信息(日誌記錄設置使用默認格式化程序)。 documentation指出:什麼是默認的Python日誌格式化程序
格式化記錄 - 如果設置了格式化程序,則使用它。否則,請使用該模塊的默認格式化程序。
但是,我找不到任何實際說明這種默認格式的參考。
感謝
我試圖破譯我的日誌中包含的信息(日誌記錄設置使用默認格式化程序)。 documentation指出:什麼是默認的Python日誌格式化程序
格式化記錄 - 如果設置了格式化程序,則使用它。否則,請使用該模塊的默認格式化程序。
但是,我找不到任何實際說明這種默認格式的參考。
感謝
默認格式位於here是:
BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s"
的Format代碼會告訴你如何定義它。這裏有一個關於如何定製它的例子。
import logging
logging.basicConfig(
level=logging.DEBUG,
format="[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(message)s",
datefmt="%H:%M:%S", stream=sys.stdout)
logging.info("HEY")
導致:
[26/May/2013 06:41:40] INFO [root.<module>:1] HEY
這是在logging/__init__.py
來源:
_defaultFormatter = Formatter()
的默認格式字符串爲%(message)s
,這是在源和:
if fmt:
self._fmt = fmt
else:
self._fmt = "%(message)s"
默認似乎是%(levelname)s:%(name)s:%(message)s
import logging
logging.error("Some error")
print "fmt: " , logging.root.handlers[0].formatter._fmt
# ERROR:root:Some error
# fmt: %(levelname)s:%(name)s:%(message)s
顯示如何檢查當前格式化程序而不是源代碼中的默認值是IMO更好的答案。 – jjj
import logging
print(logging.BASIC_FORMAT)
舊線,但是這首出現在查詢「蟒蛇日誌的默認格式爲」我的谷歌的搜索結果,所以我想我應該加我回答。
還有人問到如何自己發現這個問題。這裏是做一個自然的事情:
import logging
print(dir(logging))
BASIC_FORMAT就在那裏,其實這是在我的情況下,在結果中的第一項。
它看起來好像文檔應該指出的那樣。 –