溫馨提示×

Python執(zhí)行命令日志咋記

小樊
81
2024-11-16 22:57:54
欄目: 編程語言

要在Python中記錄執(zhí)行命令的日志,您可以使用內(nèi)置的logging模塊。以下是一個簡單的示例,展示了如何配置和使用logging模塊來記錄日志:

import logging
import subprocess

# 配置日志記錄器
logging.basicConfig(filename='command_execution.log', level=logging.INFO, format='%(asctime)s - %(message)s')

# 要執(zhí)行的命令
command = "echo 'Hello, World!'"

try:
    # 執(zhí)行命令
    result = subprocess.run(command, shell=True, check=True, text=True, capture_output=True)
    
    # 記錄命令執(zhí)行結(jié)果
    logging.info(f"Command executed successfully: {command}")
    logging.info(f"Output: {result.stdout}")
    
except subprocess.CalledProcessError as e:
    # 記錄命令執(zhí)行失敗
    logging.error(f"Command failed: {command}")
    logging.error(f"Error: {e.stderr}")

在這個示例中,我們首先導入了loggingsubprocess模塊。然后,我們使用basicConfig方法配置了日志記錄器,將日志信息寫入名為command_execution.log的文件中,并設(shè)置了日志級別為INFO。我們還定義了一個格式化字符串,用于記錄日志的時間戳和消息。

接下來,我們定義了一個要執(zhí)行的命令(在這個例子中是echo 'Hello, World!'),并使用subprocess.run方法執(zhí)行它。我們設(shè)置了shell=True以便在shell環(huán)境中運行命令,check=True以便在命令失敗時引發(fā)異常,text=True以便以文本模式獲取輸出,以及capture_output=True以便捕獲命令的輸出。

try塊中,我們執(zhí)行命令并將結(jié)果存儲在result變量中。然后,我們使用logging.info方法記錄命令執(zhí)行成功以及輸出結(jié)果。

如果在執(zhí)行命令時發(fā)生異常,我們將在except塊中捕獲它,并使用logging.error方法記錄命令執(zhí)行失敗以及錯誤信息。

0