我试图找出一些东西,但我在手册上找不到它。 我想记录一个日志文件,它是重定向的标准输出。 我把它初始化为:
self.stdout_path = os.getenv('LOGPATH','/var/log/logfile.log')
并且记录器部分也很简单:
sys.stdout.write(msg)
它运行良好(守护程序记录了我需要的所有数据),但只有一个问题,当我重新启动守护程序时,它再次打开日志文件进行写入并清空它。我想知道我是否可以在追加模式下打开日志文件,但我找不到如何实现这一点。我不确定是否可能(因为stderr通常是一个特殊的块设备/ 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,&#39; w +&#39;)
到
self.daemon_context.stdout = open(app.stdout_path, 'a+')
答案 0 :(得分:1)
这会有用吗?
sys.stdout = open(os.getenv('LOGPATH','/var/log/logfile.log'), 'a')