瞭解Python日誌語句的存儲位置的方法是什麼?Python日誌記錄 - 檢查日誌文件的位置?
也就是說,如果我做的:
import logging
log = logging.getLogger(__name__)
log.info('Test')
我在哪裏能找到的日誌文件?另外,當我打電話時:
logging.getLogger(__name__)
這是否與記錄器的行爲/保存方式有關?
瞭解Python日誌語句的存儲位置的方法是什麼?Python日誌記錄 - 檢查日誌文件的位置?
也就是說,如果我做的:
import logging
log = logging.getLogger(__name__)
log.info('Test')
我在哪裏能找到的日誌文件?另外,當我打電話時:
logging.getLogger(__name__)
這是否與記錄器的行爲/保存方式有關?
logging
模塊使用連接到記錄器的處理程序來決定如何,在何處,甚至是最終如何存儲或顯示消息。您也可以將logging
默認配置爲寫入文件。您應該確實閱讀docs,但如果您致電logging.basicConfig(filename=log_file_name)
,其中log_file_name
是要寫入消息的文件的名稱(請注意,必須在調用logging
的其他任何內容之前執行此操作),則所有消息記錄到所有消息記錄器(除非稍後進行一些進一步的重新配置)將被寫入那裏。請注意記錄器設置的級別;如果內存提供服務,info
低於默認日誌級別,所以您必須在basicConfig
的參數中包含level=logging.INFO
以及您的消息最終在文件中。
至於您的問題的其他部分,logging.getLogger(some_string)
返回一個Logger
對象,插入到根記錄器的層次結構中的正確位置,名稱的值爲some_string
。不帶參數調用,它返回根記錄器。 __name__
返回當前模塊的名稱,因此logging.getLogger(__name__)
返回Logger
對象,其名稱設置爲當前模塊的名稱。這是與logging
一起使用的常見模式,因爲它會使記錄器結構鏡像代碼的模塊結構,這通常會使日誌消息在調試時更加有用。
爲了找到日誌文件的位置,嘗試實例化您的log
對象在您的環境中一個Python外殼,看着價值:
log.handlers[0].stream
爲了得到一個簡單的文件記錄器的日誌位置,嘗試
logging.getLoggerClass().root.handlers[0].baseFilename