Tôi đang làm việc để tạo một daemon trong Ruby bằng cách sử dụng đá quý daemon. Tôi muốn thêm đầu ra từ daemon vào một tệp nhật ký. Tôi tự hỏi cách dễ nhất để chuyển hướng puts
từ bàn điều khiển đến một tệp nhật ký là gì.Chuyển hướng đầu ra lệnh "đặt" vào tệp nhật ký
Trả lời
tôi nên khuyên bạn nên sử dụng ruby logger, nó là tốt hơn so với puts, bạn có thể có nhiều cấp độ đăng nhập mà bạn có thể bật/tắt: gỡ lỗi, cảnh báo, thông tin, lỗi, v.v.
logger = Logger.new(STDOUT)
logger = Logger.new("/var/log/my-daemon.log")
Tôi sử dụng gói runit để quản lý dịch vụ Ruby, nó có svlogd hơn sẽ chuyển hướng đầu ra daemon để log file, ở đây là chạy kịch bản cho quá trình logger:
#!/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"
Điều này không thực sự trả lời câu hỏi. Điều gì sẽ xảy ra nếu bạn không thể kiểm soát ai đang thực hiện _puts_ và bạn muốn ghi lại những thứ thường ghi vào STDOUT và thay vào đó ghi chúng vào một tệp? – silvamerica
Hãy thử
$stdout = File.new('/tmp/output', 'w')
Để khôi phục:
$stdout = STDOUT
Nó sẽ không làm việc cho tôi mà không có '$ stdout.sync = true'. –
Nếu bạn cần phải nắm bắt cả stderr và stdout và không muốn sử dụng đến khai thác gỗ, Sau đây là một giải pháp đơn giản chuyển thể từ this post:
$stdout.reopen("my.log", "w")
$stdout.sync = true
$stderr.reopen($stdout)
Cảm ơn, đã làm việc tốt đẹp kết hợp với [this] (http://stackoverflow.com/questions/1993071/how-to-controller-start-kill-a-background-process-server-app-in-ruby) ! – TheDeadSerious
'.sync' là rất quan trọng. –
nếu bạn muốn đặt vẫn vào terminal, cũng như để đăng nhập tập tin? ví dụ. hành vi như 'ruby myscript.rb | tee my.log' – wim
Hoặc bạn có thể xác định lại lệnh puts
? Làm việc có lẽ chỉ trong một tập tin/lớp đơn
def puts(message)
#write message to file
end
- 1. Ghi nhật ký Java - cách chuyển hướng đầu ra sang tệp nhật ký tùy chỉnh cho trình ghi nhật ký?
- 2. Chuyển hướng đầu ra tiêu chuẩn và lỗi gắn vào cùng một tệp nhật ký
- 3. Cách chuyển hướng đầu ra của lệnh shell vào đầu vào tập lệnh Python?
- 4. Tệp nhật ký đầu ra nhật ký Git
- 5. cách chuyển hướng đầu ra của lệnh sang hai tệp
- 6. chuyển hướng đầu ra curl thành các tệp stdout và nhật ký
- 7. Chuyển hướng đầu ra nhật ký bảng điều khiển Tomcat 7 sang tệp (Windows)
- 8. Chuyển hướng đầu ra grep sang tệp
- 9. Chuyển hướng đầu ra từ vỏ erlang vào một tệp
- 10. Chuyển hướng đầu ra bash sang tên tệp động
- 11. Các khối mã chuyển hướng đầu ra đầu vào
- 12. duy trì nhật ký đầu vào/đầu ra trong R
- 13. C++ Đầu ra chuyển hướng
- 14. Chuyển hướng đầu ra bằng lệnh "màn hình"
- 15. Kết quả nguồn MySQL đầu ra cho tệp nhật ký
- 16. chuyển hướng đầu ra của lệnh 'find' sang 'vim'
- 17. Bash Scripting - vỏ lệnh đầu ra chuyển hướng
- 18. có cách nào để chuyển hướng đầu vào và đầu ra đến cùng một tệp không?
- 19. chuyển hướng sys.stdout sang nhật ký python
- 20. Có thể chuyển hướng đầu ra của một tệp lô trong tập lệnh không?
- 21. Chuyển hướng đầu ra Trace.axd
- 22. Có thể chuyển hướng đầu ra bàn điều khiển sang tệp nhật ký trong IntelliJ như Eclipse không?
- 23. chuyển hướng đầu ra tiêu chuẩn bằng c sau đó đặt lại đầu ra tiêu chuẩn
- 24. đầu ra lệnh chuyển hướng thành đầu ra biến đổi và tiêu chuẩn trong ksh
- 25. Làm thế nào để chuyển hướng đầu ra của .exe vào một tệp trong python?
- 26. backclace glibc - không thể chuyển hướng đầu ra đến tệp
- 27. Kịch bản lệnh Windows: Chuyển hướng TẤT CẢ đầu ra đến một tệp
- 28. gửi đầu ra đến tệp từ trong tập lệnh shell
- 29. Làm cách nào để chuyển hướng đầu ra trong web.py
- 30. Số lần chuyển hướng đầu vào của tập lệnh shell
Sử dụng này 'Logger || = Logger.new ("| tee # {} settings.root /log/migration_script_logger.log", "hàng tháng")', đây sẽ làm cả hai – vs4vijay