簡體   English   中英

Python日志記錄有時將消息寫入文件,但不格式化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM