Tengo una aplicación que debe registrar cada transacción. Cada mensaje de registro se vacía porque necesitamos tener un registro de lo que ocurrió antes de un bloqueo. Mis colegas y yo teníamos curiosidad acerca de cómo lograr los efectos de rendimiento del almacenamiento en búfer al tiempo que garantizamos que el mensaje de registro había abandonado el proceso.
Lo que se nos ocurrió es:
- hacer un FIFO en el que la aplicación pueda escribir, y
- redirigir el contenido de ese FIFO a un archivo normal a través de
cat
.
Es decir, lo que normalmente era:
app --logfile logfile.txt
es ahora:
mkfifo logfifo
cat logfifo &> logfile.txt &
app --logfile logfifo
¿Hay alguna trampa en este enfoque? Funcionó cuando lo probamos, pero queremos asegurarnos de que los mensajes lleguen al archivo de redireccionamiento incluso si la aplicación original falla.
(No tenemos el código fuente de la aplicación, por lo que las soluciones de programación están fuera de la cuestión. Además, la aplicación no escribirá en ella stdout
, por lo que no se puede canalizar directamente a un comando diferente. Por syslog
lo tanto, no es una posibilidad .)
Actualización: he añadido una recompensa. La respuesta aceptada no involucrará logger
por la simple razón de que nologger
es lo que he preguntado. Como dice la pregunta original, solo estoy buscando trampas al usar un FIFO.