[英]Python logging sometimes writing message to file but not format
有一個新的問題,即記錄器正在寫其他每行而不顯示格式,僅顯示消息。
我的代碼:
import logging
from logging.handlers import RotatingFileHandler
# Set up logging
LOG_FILE = argv[0][:-3] + '.log'
logging.basicConfig(
filename=LOG_FILE,
filemode='a',
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
handler = RotatingFileHandler(LOG_FILE,maxBytes=1000000)
logger.addHandler(handler)
def main():
target, command, notify_address, wait = get_args(argv)
logger.info('Checking status of %s every %d minutes.' % (target, wait))
logger.info('Running %s and sending output to %s when online.' % (command, notify_address))
從get_args()返回的var都是字符串,即使wait是一個數字。
請注意,我在IDE中或運行時未收到任何錯誤。
我在日志文件中得到的輸出:
2015-02-12 16:26:27,483 - INFO - Checking status of <ip address> every 30 minutes.
Running <arbitrary bash command string> and sending output to <my email address> when online.
2015-02-12 16:26:27,483 - INFO - Running <arbitrary bash command string> and sending output to <my email address> when online.
是什么導致第二個logger.info()打印兩次,並且僅格式化一次?
我有另一個腳本可以完美記錄,不知道我在這里做了什么。 (為安全起見,請復制/粘貼“日志記錄設置”部分)
您是否在代碼的不同級別使用記錄器? 聽起來日志消息可能正在向上傳播。 嘗試添加
logger.propagate = False
添加處理程序后。 您可以在此處查看python文檔以獲得更詳細的說明,但是下面的相關文本聽起來與您所看到的完全一樣。
注意如果將處理程序附加到記錄器及其一個或多個祖先,則它可能會多次發出同一條記錄。 通常,您不需要將一個處理程序附加到一個以上的記錄器上-如果僅將它附加到記錄器層次結構中最高的適當記錄器上,則它將看到所有后代記錄器記錄的所有事件,前提是它們的傳播設置保留為True。 一種常見的情況是僅將處理程序附加到根記錄器,並讓傳播處理其余部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.