我正在使用守護進程gem在Ruby中創建守護進程。我想將守護進程的輸出添加到日誌文件中。我想知道什麼是最簡單的方式將puts
從控制檯重定向到日誌文件。將「puts」命令輸出重定向到日誌文件
回答
我應該推薦使用Ruby記錄儀,它比放好,你可以有,你可以打開/關閉多個日誌級別:調試,警告信息,錯誤等
logger = Logger.new(STDOUT)
logger = Logger.new("/var/log/my-daemon.log")
我用runit包管理紅寶石服務,它已經svlogd比意志重定向服務輸出到日誌文件,這裏是運行腳本記錄器進程:
#!/bin/sh
set -e
LOG=/var/log/my-daemon
test -d "$LOG" || mkdir -p -m2750 "$LOG" && chown nobody:adm "$LOG"
exec chpst -unobody svlogd -tt "$LOG"
這並沒有真正回答這個問題。如果你無法控制誰正在執行_puts_,並且想要捕獲通常寫入STDOUT的東西,而是將它們寫入文件? – silvamerica 2011-04-25 19:17:12
嘗試
$stdout = File.new('/tmp/output', 'w')
恢復:
$stdout = STDOUT
沒有`$ stdout.sync = true`,它不會工作。 – 2012-02-10 16:02:51
如果您需要同時捕獲STDERR和STDOUT,不希望訴諸記錄,以下是改編自this post一個簡單的解決方案:
$stdout.reopen("my.log", "w")
$stdout.sync = true
$stderr.reopen($stdout)
謝謝,這工作很好,與[這個]結合(http://stackoverflow.com/questions/1993071/how-to-controller-start-kill-a-background-process-server-app-in-ruby) ! – TheDeadSerious 2011-02-05 17:01:44
或者您可以重新定義puts
命令?只有在一個單一的文件/類可能工作
def puts(message)
#write message to file
end
- 1. 將命令行日誌重定向到文件時出現`pause`命令問題
- 2. 如何將時間命令的輸出重定向到日誌文件?
- 3. 將git命令的錯誤重定向到日誌文件
- 4. 將預期的輸出重定向到日誌文件預期
- 5. 將python輸出重定向到日誌文件
- 6. 將控制檯輸出重定向到日誌文件
- 7. 將git包創建輸出重定向到日誌文件
- 8. 從命令行將輸出重定向到C文本文件
- 9. 將多個命令的輸出重定向到單個文件
- 10. 將輸出命令重定向到變量或文件?
- 11. 將多個命令的輸出重定向到一個文件
- 12. unix命令將輸出重定向到一個文件
- 13. 將文件的輸出重定向到寫入命令
- 14. X命令不能將輸出重定向到文件
- 15. perl系統命令重定向到日誌文件
- 16. 將重命名項目事件輸出到日誌文件
- 17. 將curl輸出重定向到標準輸出和日誌文件
- 18. 將mongodump或mongorestore命令輸出到日誌文件
- 19. 命令輸出重定向
- 20. 將輸出重定向到事件日誌
- 21. 解析日誌文件,然後將輸出重定向到其他文件
- 22. 如何重定向'&'命令的日誌?
- 23. 寫主機輸出沒有被重定向到日誌文件
- 24. 重定向不同的日誌框架輸出到文件
- 25. 在命令中將日誌記錄重定向到控制檯
- 26. 如何捕獲pexpect sendline命令輸出並將其重定向到日誌文件?
- 27. 批處理文件 - 將命令和輸出重定向到一個文件
- 28. 命令行排序文件內容並將輸出重定向到文件
- 29. VBScript記錄命令行輸出到文本(日誌)文件
- 30. 重定向SFTP命令日誌在外殼腳本文件
使用此`記錄器|| = Logger.new( 「| T恤#{} settings.root /log/migration_script_logger.log」, 「月」)`,這將做兩個 – vs4vijay 2016-03-31 12:12:32