데몬 gem을 사용하여 Ruby에서 데몬을 만드는 중입니다. 데몬의 출력을 로그 파일에 추가하려고합니다. puts
을 콘솔에서 로그 파일로 리디렉션하는 가장 쉬운 방법은 무엇입니까?"puts"명령 출력을 로그 파일로 리디렉션
답변
내가, 그것을 박았보다 더 루비 로거를 사용할 것을 권장합니다, 당신은 당신이에/해제 할 수있는 여러 로그 수준을 가질 수 있습니다 : 디버그, 경고, 정보, 오류 등
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
은 복원하려면
$stdout = File.new('/tmp/output', 'w')
을 시도해보십시오
$stdout = STDOUT
'$ stdout.sync = true'가 없으면 저에게 효과가 없을 것입니다. –
당신이 모두 STDERR 및 STDOUT을 캡처해야 및 로깅에 의존하지 않으려면, this post에서 적응 간단한 솔루션입니다 :
$stdout.reopen("my.log", "w")
$stdout.sync = true
$stderr.reopen($stdout)
고마워, [this] (http://stackoverflow.com/questions/1993071/how-to-controller-start-kill-a-background-process-server-app-in-ruby)와 관련하여 강력한 벌금을 부렸다. ! – TheDeadSerious
'.sync'는 매우 중요합니다. –
만약 puts가 여전히 터미널로 가고 파일을 로깅하기를 원한다면? 예 : 'ruby myscript.rb | 티 my.log' – wim
아니면 puts
명령을 다시 정의 할 수 있습니다? 단 하나의 파일/클래스에서 아마 작동
def puts(message)
#write message to file
end
- 1. expect에서 로그 파일로 출력을 리디렉션
- 2. cmd 출력을 파일로 리디렉션
- 3. PSEXEC 출력을 로컬 파일로 리디렉션
- 4. 파이썬. stderr를 로그 파일로 리디렉션
- 5. NAnt 로그 출력을 파일로 저장하려면 어떻게해야합니까?
- 6. msbuild 출력을 레이크에서 로그 파일로 파이프하는 방법
- 7. DOS 명령을 호출하고 출력을 파일로 리디렉션
- 8. django manage.py 출력을 (Windows에서) 텍스트 파일로 리디렉션
- 9. 날짜가있는 stderr를 Cron의 로그 파일로 리디렉션
- 10. wget 헤더 출력을 리디렉션
- 11. 출력을 리디렉션 할 때 어떻게 감지합니까?
- 12. glibc backtrace - 출력을 파일로 리디렉션 할 수 없습니다.
- 13. 스크립트 출력을 요청에 따라 로그 파일이나 OR 터미널에 리디렉션
- 14. 고객의 전화에서 로그 출력을 sdcard로 리디렉션합니다.
- 15. 모든 명령 stdout/stderr을 스크립트 내에서 로그 파일로 리디렉션
- 16. 오디오 출력을 라인으로 리디렉션
- 17. sed 출력을 tr로 리디렉션
- 18. .exe의 출력을 파이썬의 파일로 리디렉션하는 방법은 무엇입니까?
- 19. .htaccess 파일로 리디렉션
- 20. ConfigurationManager를 다른 파일로 리디렉션
- 21. Windows/WinXP 명령 : 스크립트 출력을 로그 파일로 파이프하고 출력을 표시하는 방법은 무엇입니까?
- 22. STDOUT의 마지막 줄만 파일로 리디렉션
- 23. 빌드 출력을 첨부 파일로 포함합니다.
- 24. JSP로 출력을 캡쳐하여 파일로 저장
- 25. 크래시 로그 출력을 이해하려고 시도했습니다.
- 26. restFB에서 로그 출력을 인쇄하는 방법
- 27. Jruby ScriptEngine 출력을 StringWriter로 리디렉션
- 28. Bash : init.d 출력을 변수로 리디렉션
- 29. 컴파일러 출력을 Win32 프로그램으로 리디렉션
- 30. 콘솔 출력을 winforms로 리디렉션 ListBox
사용이'LOGGER || = Logger.new ("| 티 # {settings.root} /log/migration_script_logger.log", "월")'이 모두 할 것입니다 – vs4vijay