Rediriger le “met” de sortie de la commande dans un fichier journal
Je suis en train de travailler sur la création d'un démon en Ruby en utilisant les démons de gem. Je veux ajouter une sortie du démon dans un fichier journal. Je me demande quelle est la façon la plus simple de redirection puts
à partir de la console dans un fichier journal.
Utilisez cette
LOGGER ||= Logger.new("| tee #{settings.root}/log/migration_script_logger.log", "monthly")
, cela va faire deux
OriginalL'auteur Josh Moore | 2008-10-22
Vous devez vous connecter pour publier un commentaire.
Je devais recommander d'utiliser ruby enregistreur, il est mieux que le met, vous pouvez avoir plusieurs niveaux de journal, que vous pouvez activer/désactiver: debug, avertir, info,erreur, etc.
- Je utiliser runit pour gérer ruby services, il a svlogd que va rediriger démon de sortie vers le fichier de log, ici, est d'exécuter un script pour enregistreur de processus:
OriginalL'auteur Vitalie
Si vous avez besoin de saisir à la fois les STDERR et STDOUT et ne veulent pas recourir à l'exploitation forestière, la suite est une solution simple, adaptée de ce post:
.sync
est critique.si vous voulez met à toujours aller à la terminale, ainsi que dans le fichier de log? par exemple, un comportement comme
ruby myscript.rb | tee my.log
Je sais que ce commentaire est un peu vieux, mais il y a des solutions énumérées ici " stackoverflow.com/questions/6407141/...
La commande
$stdout.reopen("my.log", "w")
me casse les rails de la console (je dois tuer le processus). À la recherche d'autres solutions.OriginalL'auteur Eric Walker
Essayer
La restauration:
$stdout.sync = true
.OriginalL'auteur Pistos
Ou vous pouvez redéfinir le
puts
commande? Fonctionne probablement que dans un seul fichier/classeOriginalL'auteur Peterdk