要在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}")
在這個示例中,我們首先導入了logging
和subprocess
模塊。然后,我們使用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í)行失敗以及錯誤信息。