簡體   English   中英

sys.stdout.write到文件追加模式

[英]sys.stdout.write to file append mode

我嘗試找出一些問題,但在手冊中找不到。 我想記錄一個日志文件,它是重定向的標准輸出。 我這樣初始化:

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,'w +')

         self.daemon_context.stdout = open(app.stdout_path, 'a+')

這行得通嗎?

sys.stdout = open(os.getenv('LOGPATH','/var/log/logfile.log'), 'a')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM