我正在嘗試將我的日志分成兩個檔案。我有主日志(根)和一個名為“auxlog”的子日志。我已經指定 auxlog 記錄到它自己的檔案中,它成功了,但它也出現在根日志中。我不知道我是否誤解了日志記錄模塊的基本原理,或者我只是錯過了一個配置選項。基本上,我想將我的日志分為以下兩類:
- 一個日志來處理我的應用程式的整體功能,以及
- 另一個處理一個特定類的日志記錄的日志。
這兩個都有效,但特定類的日志是多余的,因為它被寫入兩個檔案。這是我的代碼:
logging.basicConfig(filename='app.log', level=logging.INFO, format='[%(asctime)s][%(name)s][%(levelname)s]: %(message)s')
# Aux Logger
auxlog = logging.getLogger("auxlog")
aux_handler = logging.FileHandler("aux.log")
aux_handler.setFormatter(logging.Formatter("[%(asctime)s]:[%(name)s]\t%(message)s"))
auxlog.setLevel(logging.INFO)
auxlog.addHandler(aux_handler)
當我在我的特殊課程中使用 auxlog 時,我只是呼叫auxlog.info("my message here"),但是它仍然出現在app.log
uj5u.com熱心網友回復:
TL;DR:您可以通過設定來實作您想要的行為auxlog.propagate = False。
Python 記錄器通過基于記錄器名稱(拆分為'.')形成樹來作業。顧名思義,根記錄器構成了這棵樹的根。例如,一個名為 logger 的 loggera.b將是 的子節點a,而 logger 將是 root logger 的子節點。
默認情況下,所有日志都會傳播到它們的父記錄器。重要的是,處理程式不會阻止這種傳播行為——即它們的行為就像一個“三通”,而不是“接收器”。如果您希望它們被隔離,您必須明確關閉特定記錄器上的傳播。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/477174.html
標籤:Python python-3.x 日志记录
