Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PM2不';t log Python3打印语句_Python_Pm2 - Fatal编程技术网

PM2不';t log Python3打印语句

PM2不';t log Python3打印语句,python,pm2,Python,Pm2,我使用PM2在后台运行Python程序,如下所示 pm2启动helloworld.py 它工作得非常好。但是,在helloworld.py中,我有几个print语句充当日志。例如,当网络请求传入或数据库值更新时。当我像这样运行helloworld.py时: python3 helloworld.py 所有这些打印语句都是可见的,我可以调试我的应用程序。但是,在运行时 pm2日志helloworld 这些打印语句均未显示。请检查文件夹#HOME/.pm2/logs 例如,请参见此处的文件夹结构部分

我使用PM2在后台运行Python程序,如下所示

pm2启动helloworld.py

它工作得非常好。但是,在
helloworld.py
中,我有几个print语句充当日志。例如,当网络请求传入或数据库值更新时。当我像这样运行
helloworld.py
时:

python3 helloworld.py

所有这些打印语句都是可见的,我可以调试我的应用程序。但是,在运行时

pm2日志helloworld

这些打印语句均未显示。

请检查文件夹#HOME/.pm2/logs

例如,请参见此处的文件夹结构部分:

还考虑使用一个配置文件,该文件具有与脚本相对应的显式日志文件夹。(注意此文件夹必须存在,pm2才能使用。)请参阅

跟踪这些日志文件的好方法是运行tail

tail -f logs/*.log
更新: 明确地说,使用配置文件适用于python脚本。只需创建一个json配置文件,指定脚本和输出位置。比如说

{
  "apps": [
    {
      "name": "Test Python",
      "script": "test.py",
      "out_file": "test.out.log",
    }
  ]
}
然后运行它 pm2 start test.json
在结果中查找进程id。使用此进程ID可停止进程并查看日志文件的位置。例如,pm2 show 3

这个问题已经问了几个月了,所以也许你不久前就知道了,但当我遇到同样的问题时,它是谷歌最热门的搜索结果之一,所以我想我应该添加我发现的内容


这似乎是python如何缓冲sys.stdout的问题。在某些平台/实例中,当由pm2或nohup调用时,sys.stdout流可能在进程退出之前不会被刷新。将“-u”参数传递给python解释器会阻止它缓冲sys.stdout。在pm2的process.json中,我添加了“解释器参数”:“-u”,现在我可以正常获取日志。

您的示例引用了一个节点项目,而问题是关于Python的。@DesignbyAdrian上面的答案适用于Python脚本。我会补充更多细节。@DesignbyAdrian我很感激否决票是恰当的,因为我没有回答原始海报的全部问题。你能考虑取消投票吗?ThanksI无法使
解释器参数作为
pm2
命令行选项工作。所以我制作了一个bash脚本,它调用
python-umyscript.py
pm2start
编辑了这个bash脚本。
{
  "apps": [
    {
      "name": "Test Python",
      "script": "test.py",
      "out_file": "test.out.log",
    }
  ]
}