Question

Je travaille sur la création d'un démon dans Ruby à l'aide du démon gem. Je veux ajouter la sortie du démon dans un fichier journal. Je me demande quel est le moyen le plus simple de rediriger met de la console vers un fichier journal.

Était-ce utile?

La solution

Je devrais recommander l'utilisation de ruby ??logger, c'est mieux que de mettre, vous pouvez avoir plusieurs niveaux de journalisation que vous pouvez activer / désactiver: déboguer, avertir, info, erreur, etc.

 logger = Logger.new(STDOUT)
 logger = Logger.new("/var/log/my-daemon.log")

J'utilise un paquet runit pour gérer les services Ruby, il contient svlogd qui redirige le résultat du démon vers le fichier journal. Voici le script d'exécution du processus de journalisation:

#!/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"

Autres conseils

Si vous devez capturer à la fois STDERR et STDOUT et que vous ne souhaitez pas vous connecter, voici une solution simple adaptée de cet article :

$stdout.reopen("my.log", "w")
$stdout.sync = true
$stderr.reopen($stdout)

Essayez

$stdout = File.new( '/tmp/output', 'w' )

Pour restaurer:

$stdout = STDOUT

Ou vous pouvez redéfinir la commande met ? Ne fonctionne probablement que dans un seul fichier / classe

def puts(message)
   #write message to file
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top