【问题标题】:Logging python errors on raspberry pi在树莓派上记录 python 错误
【发布时间】:2015-05-18 03:45:34
【问题描述】:

我正在调试我为嵌入式树莓派项目编写的 python 应用程序,因为它使用 TFT 屏幕而不是完整的显示器并且没有显示器/键盘,所以我'我必须通过 TFT 桌面上的图标启动 python 应用程序(非常小)。我无法通过 SSH 启动应用程序,因为它需要 X(由于 PyQT4),所以要让它在 RPi 上运行,它必须使用设备本身的桌面图标启动。

桌面图标启动一个使用以下内容的 shell 脚本:

sudo python appname.py >> logfile.log

但这并没有写出它遇到的任何错误,它只记录我在任何错误之前所做的任何事情。

如果我从 RPi 中取出 SD 卡并将其放入已连接到完整鼠标/键盘/显示器的第二个 RPi,我可以运行 python 应用程序并在终端中查看错误,但这并没有帮我弄清楚完全组装好的设备上发生了什么。

如何记录我通常会在终端中看到的错误?

编辑:当然我在应用程序中进行错误捕获,但我在 python 应用程序中发送 shell 命令,这可能是 python 中的 try/catch 无法捕获的问题。当您启动 python 脚本时,无论其来源如何,我都想在终端中捕获所有输出。

【问题讨论】:

    标签: python linux pyqt raspberry-pi


    【解决方案1】:

    就目前而言,您只是在捕获标准输出。将您的调用修改为以下内容:

    sudo python appname.py >> logfile.log 2>&1
    

    这将重定向标准输出和标准错误。

    【讨论】:

    • 当我添加 2>&1 时,应用程序根本无法启动,并且没有写入任何内容
    • 原来是因为我在用来启动的图标中设置了Terminal=false。将其设置为 true 使一切正常
    【解决方案2】:

    只有错误可以使用:

    sudo python appname.py 2>> logfile.log
    

    仅限stdout

    sudo python appname.py >> logfile.log
    #same as sudo python appname.py 1>> logfile.log
    

    对于stdoutstderr

    sudo python appname.py >> logfile.log 2>&1
    

    【讨论】:

      【解决方案3】:

      您还可以将 stderr 捕获到单独的文件中:

      sudo python appname.py >> logfile.log 2>> error.log
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-08
        • 1970-01-01
        • 1970-01-01
        • 2018-11-04
        • 2013-09-21
        • 2015-09-22
        • 2020-03-14
        • 2018-10-15
        相关资源
        最近更新 更多