Tengo una aplicación (aplicación de servidor) que necesita una gran cantidad de registros implementados y no debe verse demasiado afectada por el rendimiento al permitir el registro.registro multiproceso para aplicaciones de alto rendimiento
La aplicación tiene un grupo de subprocesos de subprocesos de trabajo que realizan el trabajo. Originalmente iba a iniciar sesión en estos subprocesos del grupo de subprocesos, pero luego tendría que bloquear prácticamente todo el hilo y así aparece mi aplicación 'multiproceso'.
He estado buscando mejores formas de iniciar sesión desde varios subprocesos y he descubierto que usar una cola o un buffer en anillo podría ser una idea.
¿Alguien puede sugerir (tal vez por experiencia) alguna buena forma de implementar el registro efectivo (a un archivo en su mayoría) para una aplicación multiproceso que también debería mantenerse un tanto eficaz?
Me gustaría utilizar la biblioteca Boost Logging.
Puede valer la pena señalar lo obvio: que tan pronto como empiece a realizar el registro asincrónico, también corre el riesgo de perder las últimas entradas de registro si su aplicación falla. Dado que la aplicación se reanuda inmediatamente después de * iniciar * el registro, no tiene garantía de que todos los mensajes de registro se hayan escrito en el disco en un momento dado. – jalf
@jalf: ¿qué sugieres que haga entonces? –
No hay pista. Depende de tu necesidad Un mecanismo de registro asincrónico aún puede ser la mejor manera de hacerlo en su caso, solo estoy señalando una advertencia importante que debe tener en cuenta. Por supuesto, una posible alternativa podría ser escribir los datos de registro en un medio más rápido que un disco duro (¿Un disco SSD? ¿Una conexión de red rápida?), Por lo que no bloquea la aplicación host durante milisegundos preciosos como lo haría una escritura en disco duro. – jalf