1
我試圖弄清楚一些事情,但我在手冊上找不到它。 我想記錄一個日誌文件,它是重定向的標準輸出。 我初始化這樣的:sys.stdout.write到文件追加模式
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 =開放(app.stdout_path, 'W +')
到
self.daemon_context.stdout = open(app.stdout_path, 'a+')
可悲的是:守護進程需要設置stdout_path,但它給了我一個主意 – banyek