sys.stdout.write 写入文件追加模式
我在尝试解决一个问题,但在手册上找不到相关信息。
我想记录一个日志文件,这个日志文件是重定向的标准输出。
我这样初始化它:
self.stdout_path = os.getenv('LOGPATH','/var/log/logfile.log')
日志记录的部分也很简单:
sys.stdout.write(msg)
这工作得很好(守护进程记录了我需要的所有数据),但有一个问题,就是当我重启守护进程时,它会重新打开日志文件进行写入,并把内容清空。我在想是否可以以追加的方式打开日志文件,但我找不到实现的方法。我不太确定这是否可行(因为标准错误输出通常是一个特殊的块设备,比如/dev/tty)。我希望能保持现在的方式——重定向输出——但如果不行,我可以改成用os.write来处理,但我其实不太想这样。
编辑:
好的,看来问题出在守护进程的库上。
Traceback (most recent call last):
File "/usr/local/bin/mambocollector", line 167, in <module>
mambo_runner = runner.DaemonRunner(mambo)
File "/usr/lib/python2.6/site-packages/daemon/runner.py", line 80, in __init__
self.daemon_context.stdout = open(app.stdout_path, 'w+')
AttributeError: 'Mambo' object has no attribute 'stdout_path'
所以我需要把这个
self.daemon_context.stdout = open(app.stdout_path, 'w+')
改成
self.daemon_context.stdout = open(app.stdout_path, 'a+')
1 个回答
1
这样做可以吗?
sys.stdout = open(os.getenv('LOGPATH','/var/log/logfile.log'), 'a')