有没有什么办法,能把服务器上 supervisor 启的 python 进程的 print,重定向到本地

2014-03-17 00:06:02 +08:00
 arbipher
否则debug好麻烦。我在测试新浪微博的API,没法本地测。

服务器端supervisor啊nginx啊都(bie)写(ren)好(xie)了(de),我不(lan)想(de)改了。

“重定向到本地”的意思是"任何比我看log更简单的办法"

我是linux小白,菊苣们有什么好办法,指导一下。
6714 次点击
所在节点    Python
20 条回复
loveshouhu
2014-03-17 00:22:54 +08:00
[program:XXX]
directory = /path/to/XXX
command = ....
autostart=true
redirect_stderr = true
user = xxx
stdout_logfile = /path/to/logs/log.log
strak47
2014-03-17 00:30:12 +08:00
ssh 运行时不就看到了吗?
或者可以试试 fabric
mengzhuo
2014-03-17 00:31:56 +08:00
同意楼上,
不过不管是不是别人写的,最好查找替换一下print成log,这样以后还可以直接通过rsyslog传回公司内部的logserver

p.s. 别人写的竟然没有通过testcase就交货啦?
tcsky
2014-03-17 00:32:03 +08:00
你直接ssh连服务器上去 tail -f 看日志吧~
mengzhuo
2014-03-17 00:32:40 +08:00
我X……这速度,我是同意一楼
beakey
2014-03-17 00:34:53 +08:00
可以开启网页,在网页上看日志
jerry
2014-03-17 00:44:06 +08:00
为什么不能本地调试?如果是因为回调页地址可以用 /etc/hosts
arbipher
2014-03-17 01:05:58 +08:00
@loveshouhu
我没有看懂你的回复。。。
supervisor在服务器端,
> stdout_logfile = /path/to/logs/log.log
这是个服务器端的路径?
那我要看这个log,还是ssh过去,然后tail?
我就是觉得这样子麻烦。想问问偷懒的法子啊


@strak47
> ssh 运行时不就看到了吗?
是什么意思?
> 或者可以试试 fabric
这个我用了,是对的。用fabric直接启Python web.py,这个print我在本地是能看到的。
关键服务器端是supervisor启的web.py,而且nginx已经占了80端口。我不想改ngxin的设备,80端口没法用。


@tcsky
这就是我提问的地方。我觉得这样麻烦了,Fabric那种是把服务器端Python进程的print实时输出到我本地的。但是现在用不了Fabric。也不是说用不了,我想知道有没有更简单的办法,在尽量少修改原来模块的情况下,使我debug容易一些。

@mengzhuo
> 最好查找替换一下print成log
现在还是开(xue)发(xi)中,我不是很熟悉新浪的API,还想做做实验,感觉print比log用起来快捷。
> rsyslog传回公司内部的logserver
两人小作坊啦,名词记住了。等开发差不多了我来学习一下。。。


@jerry
因为新浪要求的redirec_url是个域名。。。
jerry
2014-03-17 01:27:25 +08:00
@arbipher 在 /etc/hosts 里将redirec_url那个域名解析到本机调试,调试完了再删除那条解析就OK了
jerry
2014-03-17 01:30:02 +08:00
@arbipher 如果是 Windows 应该就修改 C:\Windows\System32\drivers\etc\Hosts 文件
beakey
2014-03-17 01:46:45 +08:00
新浪可以在本地调试…
ipconfiger
2014-03-17 01:52:33 +08:00
senatra 重定向到web,然后,刷web
mengzhuo
2014-03-17 06:03:58 +08:00
@arbipher 当年给客户调试淘宝接口的时候,我也是这么想的,结果在客户机子上写了30多句print,反复调试了一天……也没能调试出来(@。@)

最后发发狠,学ipdb+log模块也只花了半小时
treo
2014-03-17 08:45:56 +08:00
Mutoo
2014-03-17 09:29:40 +08:00
nc (netcat, network version cat) 不就是用来做这件事的么
arbipher
2014-03-17 13:04:36 +08:00
@beakey 我理解错了?在这里提交“http://open.weibo.com/webmaster/add”
OAuth的流程是:
1 用户上我的网站
2 用户点击微博登陆
3 弹出微博登陆窗口
4 登陆成功,微博回调我提供的网站URI。

4中的URI在本地的话,微博怎么回调的过来……我没能理解。
arbipher
2014-03-17 13:08:17 +08:00
@ipconfiger 你说的是sinatra?那我懂了,我tornado是一样的。。。不过这里面有一个问题。。。supervisor的log有个长得很像hash值的后缀名,每次run都不一样。。。


@mengzhuo 发发狠,哈哈,我来看下ipdb和log


@treo
@Mutoo
这个看起来像!我来学习一发。

楼上感谢已发送(人肉去重复)
guoqiao
2014-03-17 16:08:03 +08:00
不想ssh的话, 可以开启supervisor的web, 直接在浏览器里看日志.
arbipher
2014-03-18 02:05:16 +08:00
@guoqiao
@ipconfiger
@beakey
试了下supervisor自带了网页调试,开启方法是在config里面加入[inet_http_server]段
有个坑是ubuntu下,supervisor重新加载config是
supervisorctrl reload
而不是
service supervisor restart

之后可以在web上操作supervisor了。


@mengzhuo
看了文档,也试用了一下。
然后我发现不用装ipdb,用自带的pdb就可以了。
log,和其他语言的大同小异。


@treo
@Mutoo
@tcsky
学习了一发nc。在服务器端重定向stdout到TCP链接,客户端接收。

另外,我太菜了!我今天才知道 tail -f 是“实时的”。。。
然后我发现本地 ssh server_name tail /path/to/log.log就可以了。


小白又怒学了好多“姿势”,感谢楼上朱军。
arbipher
2014-03-19 02:03:17 +08:00
自己re一个,犯了几个巨大的错误。。。
supervisor config里面的stdout_redirect也是不包括print的,想要用tail -f看到事实的输出,还是得老老实实的用log

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/104600

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX