4
我想在我的python代碼執行的運行時刪除StreamHandler。Python:日誌記錄:刪除StreamHandler
if (False == consoleOutput):
lhStdout = log.handlers[0] # stdout is the only handler initially
log.removeHandler(lhStdout)
這工作正常。但我不喜歡我們假設stdout是處理程序數組中的第一個處理程序。有沒有辦法查詢處理程序類來找到它是哪種類型?事情是這樣的
for handler in log.handlers
if (handler.type == StreamHandler())
<...>
謝謝,它的工作! 在你的問題上,爲什麼不使用StreamHandler? IO的原因?或更便宜的替代品(使用Filehandler,並做尾巴?) –
我的問題不是「爲什麼不使用StreamHandler」,但爲什麼你會讓你的代碼從記錄器的配置中刪除一些東西。如果是應用程序代碼,那麼_your_代碼負責配置記錄器,並且您只需在配置中不使用StreamHandler。如果它是庫代碼,那麼BY BY MEAN *不要*混淆記錄器的配置,這是應用程序的代碼責任,而不是你的。 TL; DR:如果你想從記錄器中刪除一個處理程序,那麼你沒有使用正確的方式記錄日期。 –
*「如果你想從記錄器中刪除一個處理程序,那麼你沒有用正確的方式記錄」*不幸的是,這不是真的。一些庫向它們的記錄器添加一個流處理程序,並且調用應用程序可能想要將其移除。 – Kylotan