【问题标题】:How to capture command-line output with python logging?如何使用 python 日志记录捕获命令行输出?
【发布时间】:2019-10-26 01:10:26
【问题描述】:

我正在编写一个脚本来匿名化元数据,并且我正在设置一个日志系统来记录脚本在每次收到主题时是如何执行的。该脚本从在线服务器推送和提取信息,并使用“curl”shell 命令来执行此操作。当我执行脚本时,我在 shell 中得到一个输出,我想将它记录在日志文件中,但我不知道如何捕获它。

目前我将记录器配置为:

import logging

logging.basicConfig(filename='/path/to/logging_test.txt',filemode='a',format='%(asctime)s - %(levelname)s - %(message)s',level=logging.DEBUG)

logger = logging.getLogger(__name__)

然后我在从服务器拉取元数据后执行命令来修改元数据,

os.system(cmd)

输出到 shell 的内容如下:

{
   "ID" : "dshbjhdoqwdjwebfie",
   "Path" : "/subjects/dshbjhdoqwdjwebfie",
   "Type" : "Subject"
}

我希望在日志文本文件中包含这些内容。我该怎么做?

【问题讨论】:

    标签: python shell logging command-line stdout


    【解决方案1】:

    尝试使用os.popen 而不是os.system,以获取字符串形式的输出:

    output = os.popen(cmd).read()

    然后你可以像记录任何其他字符串内容一样记录它

    【讨论】:

    • 成功了,非常感谢!不过处理确实需要一分钟多,我想知道是否有更快的方法。
    猜你喜欢
    • 1970-01-01
    • 2022-12-01
    • 2020-10-18
    • 2023-03-31
    • 1970-01-01
    • 2020-11-11
    • 2018-01-28
    • 1970-01-01
    • 2016-11-14
    相关资源
    最近更新 更多