我在我正在處理的Python應用程序中格式化記錄器輸出時遇到了一些問題。目前,我在一個獨立的文件中創建我的記錄並將其存儲在像這樣一類變量...Python記錄器消息顯示在單獨的行上
import logging
class Logging():
FORMAT = '[%(levelname)s]: %(asctime)-15s'
logging.basicConfig(format=FORMAT)
logger = logging.getLogger('Mariner')
ch = logging.StreamHandler()
logger.addHandler(ch)
logger.setLevel(logging.INFO)
對於我所有的類,需要登錄的功能,我只需導入我的記錄器類,如下所示:
import Logging from Logging
然後我繼續參考Logger類變量在使用像這樣:
Logging.logger.info("some message")
在記錄消息時出現在我的控制檯,它們跨越兩行用拳頭CON包含格式化的輸出,第二個包含純文本消息。例如:在第二行一旦上了第一線W /格式化,而一旦沒有:
[INFO]: 2017-07-16 19:28:47,888
writing book state to mongo db...
我也試着明確添加消息屬性來我的格式化字符串,但該結果的消息在被打印兩次。
我是新來的Python日誌記錄,並看到其他用戶確定他們的問題是由多個處理程序連接引起的。不過,我不認爲這是真的,因爲我試圖宣佈我的記錄器一次,並跨班分享同一個實例。如果確實是這個問題,我很抱歉問一個重複的問題,並會感激某種方向。我注意到我正在獨立的線程上運行的進程中使用相同的記錄器,但是我已經讀了一些關於python中的日誌實現,它似乎是線程安全的。
太棒了。一旦我獲得了聲譽,我就會高興起來。爲了迴應你的問題,讓記錄器成爲共享常數的想法正是我所要做的。當我在代碼中引用記錄器時,我正在做這樣的事情......「從記錄導入記錄」,然後按照「Logging.logger ...」的用法。我想也許封裝這個對象的類沒有必要?我對Python編程新手(但絕對不是新的面向對象的通用設計)。 – user8260860