J'ai une application qui doit enregistrer chaque transaction. Chaque message d'enregistrement est supprimé parce que nous devons avoir un enregistrement de ce qui s'est passé jusqu'à un crash. Mes collègues et moi étions curieux de savoir comment obtenir les effets de performance de la mise en mémoire tampon tout en garantissant que le message d'enregistrement avait quitté le processus.
Ce que nous avons trouvé est :
- créer une FIFO dans laquelle l'application peut écrire, et
- rediriger le contenu de cette FIFO vers un fichier ordinaire via
cat
.
C'est-à-dire, ce qui était ordinairement :
app --logfile logfile.txt
est maintenant :
mkfifo logfifo
cat logfifo &> logfile.txt &
app --logfile logfifo
Cette approche comporte-t-elle des inconvénients ? Cela a fonctionné lorsque nous l'avons testé, mais nous voulons être absolument sûrs que les messages trouveront leur chemin vers le fichier de redirection même si l'application originale se plante.
(Nous n'avons pas le code source de l'application, donc les solutions de programmation sont hors de question. De plus, l'application n'écrira pas sur stdout
Il n'est donc pas question de passer directement à une autre commande. Donc syslog
n'est pas une possibilité).
Mise à jour : J'ai ajouté une prime. La réponse acceptée sera no impliquer logger
pour la simple raison que logger
es no ce que j'ai demandé. Comme l'indique la question initiale, je ne cherche que des problèmes liés à l'utilisation d'une FIFO.