Java调用python脚本,脚本日志如何输入到日志文件中?如何实时获取脚本日志?

Java调用python脚本遇到的两个问题,求教:

  • 1、Java调用python脚本,python脚本不会输出日志到日志文件;
    但是单独运行python脚本会输出日志文件,为什么?怎么解决?

  • 2、Java调用python脚本,只会在脚本执行结束后才可以一次性获取脚本日志信息,怎么实现实时获取脚本执行日志?

相关代码和脚本

终端直接执行,会生成日志文件
python /tmp/pytest.py >>/tmp/pylog.log 2>&1
Java调用,不会新建生成日志文件

···
Runtime.getRuntime().exec(“python /tmp/pytest.py >>/tmp/pylog.log 2>&1”)
···

python脚本
#!/usr/bin/python
# -*- coding: UTF-8 -*-

import logging
import time

logging.basicConfig(level=logging.DEBUG)

for num in range(0, 3):
    time.sleep(1)
    logging.info('logging 当前序号 :' + str(num) )
    print' print当前序号 :', num
阅读 7.5k
3 个回答

不要在Runtime.exec()里使用重定向符,而是用process.getInputStream()获得日志。例如:

    Process process = Runtime.getRuntime().exec("python /tmp/pytest.py");
    try (FileOutputStream out = new FileOutputStream("/tmp/pylog.log")) {
        Streams.copy(process.getInputStream(), out);
    }

1 建立sh文件
cd /tmp && echo "/usr/bin/python /tmp/pytest.py >>/tmp/pylog.log 2>&1" >> pytest.sh
2 在java中执行sh文件
java中执行 Runtime.getRuntime().exec(“/usr/bin/sh /tmp/pytest.sh”)
3 解决。

PS:python和sh命令记得使用绝对地址。
我终端是/usr/bin/python 和/usr/bin/sh ,你自己终端记得做响应调整。

自学全自动引流脚本,从此自己写脚本,躺着赚钱!!!^o^/
不要再整天在网上搜网赚项目,撸羊毛,刷单等等,这些十有八九是骗人的!(⊙o⊙)
您不信,踩地雷,可不要怪我没提醒您啦!!!o(╯□╰)o
要想真的赚钱,就必须学会我(脚本)!我就是您的摇钱树,只要学会了,小则下硬币,
大则下钞票雨!^◎^
根据密报,兼职开发脚本人员平均薪资4996元,取自6573份样本!≥0≤
线报人员可是我亲弟-小虫虫(爬虫脚本)≥ω≤
什么?您也想要一个!⊙﹏⊙‖
我可不会把亲弟卖给您的,要不您也生一个!!!(学脚本)O ^ ~ ^ O
这篇文章就是bot,我每天自动发出来的,bot的主人偷懒去了!!! ̄▽ ̄
bot:我们家曾经是很幸福的,几兄弟姐妹!我的弟弟(股票实时监控通知脚本)给主人卖了,妹妹(商城价

格实时监控下单脚本)也是,
还有姐姐(商品抢购脚本)……不要说了,等一下让做装修的主人知道了,连我也一起卖了!!!O_o
这篇文章告诉大家要有一门技术,能养活自己的技术!如果你学会的话,你就可以自己写引流脚本啦!★~★
同时也可以接单,根据别人的要求写脚本,拿出去卖脚本也是很ok的呀!★~★
只要您能想到的,我们几兄弟姐妹都能做到,快快来!!!★~★
最后,烦请带上巨款199元'营养费'把我们怀上(学会),现在把我跟兄弟姐妹的'四维'图(源码,包括上网

去广告,免费看电影的)奉上,一起练一下手![>/<]
造'人'秘笈https://★~★weidian.com/?★~★userid=281356(粘贴时请把★~★去除)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏