[英]How did I log stdout after daemonize?
I successfully daemonize my python code by using Sander Marechal's code sample . 我通过使用Sander Marechal的代码示例成功地守护了我的python代码。 Now I want to log stdout to logfile but failed. 现在我想将stdout登录到日志文件,但是失败了。 How did I log stdout after daemonize? 守护程序后如何记录stdout? Here is my code: 这是我的代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import zerorpc, zmq
import os, sys, time
from daemon import Daemon
class RunTestCase(zerorpc.Subscriber):
def __init__(self, domain, *args, **kwargs):
super(RunTestCase, self).__init__(*args, **kwargs)
self.domain = domain
def add(self, domain, testcase_pk, testresult_pk):
print domain, testcase_pk, testresult_pk
if domain == self.domain:
print "NAT Got it"
class subscriberd(Daemon):
domain = ""
def run(self):
# Start RPC Server
s = RunTestCase(self.domain)
s._events.setsockopt(zmq.TCP_KEEPALIVE, 1)
s.connect("tcp://192.168.77.170:8888")
s.run()
if __name__ == "__main__":
daemon = subscriberd('/tmp/subscriber.pid', stdout='/tmp/subscriber.log')
#I add stdout here but /tmp/subscriber.log still empty after test.
daemon.domain = sys.argv[1]
if len(sys.argv) == 3:
if 'start' == sys.argv[2]:
daemon.start()
elif 'stop' == sys.argv[2]:
daemon.stop()
elif 'restart' == sys.argv[2]:
daemon.restart()
else:
print "Unknown command"
sys.exit(2)
sys.exit(0)
else:
print "usage: %s domain start|stop|restart" % sys.argv[0]
print "ex: %s KS-1 start" % sys.argv[0]
sys.exit(2)
This is what i do 这就是我所做的
import io, sys
# Redirect stdout to a file inside daemon
if not foreground:
# Make it possible to get output what daemonized IPython is doing
sys.stdout = io.open("notebook.stdout.log", "wt")
sys.stderr = io.open("notebook.stderr.log", "wt")
Full example: 完整示例:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.