Pracuję nad utworzeniem demona w Ruby przy użyciu klejnotów demonów. Chcę dodać dane wyjściowe z demona do pliku dziennika. Zastanawiam się, jaki jest najprostszy sposób przekierowania puts
z konsoli do pliku dziennika.Przekieruj dane wyjściowe polecenia "puts" do pliku dziennika
Odpowiedz
mam zaleca się stosowanie rubinowy rejestratora, to lepiej, niż stawia, można mieć wiele poziomów dziennika, które można włączyć/wyłączyć: debug, ostrzec, info, błąd itp
logger = Logger.new(STDOUT)
logger = Logger.new("/var/log/my-daemon.log")
używam pakiet runit do zarządzania usługami rubin, to svlogd niż woli demon przekierować wyjście do pliku dziennika, tutaj jest uruchomienie skryptu do procesu rejestratora:
#!/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"
To tak naprawdę nie odpowiada na pytanie. Co zrobić, jeśli nie możesz kontrolować, kto robi _puts_ i chcesz przechwycić rzeczy, które normalnie piszą do STDOUT i zamiast tego zapisują je do pliku? – silvamerica
Spróbuj
$stdout = File.new('/tmp/output', 'w')
Aby przywrócić:
$stdout = STDOUT
To nie będzie działało dla mnie bez '$ stdout.sync = true'. –
Jeśli chcesz uchwycić zarówno STDERR i stdout i nie chcemy uciekać się do wyrębu, po to proste rozwiązanie adaptacją this post:
$stdout.reopen("my.log", "w")
$stdout.sync = true
$stderr.reopen($stdout)
Dzięki, że działało potężne grzywny w połączeniu z [to] (http://stackoverflow.com/questions/1993071/how-to-controller-start-kill-a-background-process-server-app-inrub) ! – TheDeadSerious
'.sync' jest krytyczny. –
co, jeśli chcesz, aby puts nadal przejść do terminalu, a także do pliku dziennika? na przykład zachowanie takie jak 'ruby myscript.rb | tee my.log' – wim
Lub możesz przedefiniować polecenie puts
? Działa chyba tylko w jednym pliku/klasy
def puts(message)
#write message to file
end
- 1. Windows Batch Script: Przekieruj WSZYSTKIE dane wyjściowe do pliku
- 2. Wyślij dane wyjściowe do pliku
- 3. Jak potokować dane wyjściowe polecenia do pliku na Linuksie
- 4. Dane wyjściowe dziennika przetwarzania wieloprocesowego. Przetwarzanie
- 5. Chef - Jak uzyskać dane wyjściowe polecenia do Ruby zmiennej
- 6. Sprawdź dane wyjściowe polecenia w skrypcie powłoki
- 7. STORE dane wyjściowe do jednego pliku CSV?
- 8. Dane wyjściowe XMLWriter do pliku XML
- 9. Powłoka - Pomiń dane wyjściowe pojedynczego polecenia
- 10. Dane wyjściowe polecenia Linux jako parametr innego polecenia
- 11. Dane wyjściowe potoków z polecenia powłoki do skryptu Pythona
- 12. Jak zapisać dane wyjściowe polecenia Linuksa do zmiennej w lalce
- 13. VIM: przechowuj dane wyjściowe polecenia zewnętrznego do rejestru.
- 14. Jak uzyskać dane wyjściowe polecenia bash w zmiennej
- 15. Dołącz dane pliku tekstowego do pliku dziennika, .bat
- 16. Jak uzyskać dane wyjściowe polecenia zewnętrznego w Perlu?
- 17. Uzyskaj dane wyjściowe polecenia systemowego w programie C
- 18. Jak ładnie wydrukować dane wyjściowe dziennika w konsoli Chrome DevTools?
- 19. Jak zrzucić całą sesję GDB do pliku, w tym polecenia, które wpisuję i ich dane wyjściowe?
- 20. jak napisać dane wyjściowe do tego samego pliku przy użyciu polecenia awk
- 21. jak uzyskać dane wyjściowe polecenia przy korzystaniu z Microsoft nmake?
- 22. Jak ustawić program FlashBuilder, aby wyświetlał dane wyjściowe wiersza polecenia?
- 23. Vagrant - jak wydrukować dane wyjściowe polecenia szefa kuchni na stdout?
- 24. czas Grep wyjściowe polecenia
- 25. Dane pliku tekstowego analizujące wiersze i dane wyjściowe jako kolumny
- 26. Python, jak wysłać dane wyjściowe do pliku i terminala
- 27. IPython: szybko zrzuć dane wyjściowe komórki do pliku
- 28. Jak przekierować dane wyjściowe do pliku za pomocą CreateProcess?
- 29. Dołącz dane wyjściowe apsrtable (lub stargazer) do pliku Rmd
- 30. Jak odczytać dane wyjściowe polecenia IPython% prun (profiler)?
Użyj tego 'LOGGER || = Logger.new ("| tee # {settings.root} /log/migration_script_logger.log", "co miesiąc")', to zrobi zarówno – vs4vijay