Pregunta

Tengo una aplicación c ++ que se registra en algún archivo usando log4cxx (RollingFile appender). Quiero iniciar sesión en el mismo archivo, al mismo tiempo, desde otro módulo escrito en c #; así que configuré log4net para usar el mismo archivo, pero no puedo recibir los nuevos mensajes. Si desactivo el registro de c ++, puedo ver los mensajes de c #. Así que creo que es un problema de bloqueo, y busqué una opción de configuración para decirle a log4cxx que no bloquee el archivo. Entré en el modelo MinimalLock para log4net, pero no pude encontrar nada en log4cxx ... ¿Alguien sabe si podría hacerse y cómo?

gracias de antemano,

Ernesto Cullen

¿Fue útil?

Solución

Creo que podría tener problemas de concurrencia y de contención, independientemente de la configuración que use, siempre que intente tener dos procesos de registro diferentes en el mismo archivo.

Debería considerar el envío de eventos de registro desde ambos procesos a una tercera ubicación centralizada: eche un vistazo a RemotingAppender en log4net, asumo que log4cxx tiene algo similar.

Otros consejos

Incluso si la pregunta es bastante antigua (y está marcada como respondida) y probablemente ya hayas terminado con tu proyecto:

log4net y log4cxx son marcos de trabajo de registro distintos que no se conocen entre sí, por lo que no se pueden configurar para escribir en el mismo archivo. Solo uno de los marcos de trabajo tendrá el archivo abierto para escribir, el que haya sido el primero.

Lo que he hecho en una situación similar (una aplicación de c ++ heredada con el registro personalizado de un nuevo módulo c # usando log4net) es crear un appender log4net personalizado que reenvíe las trazas al antiguo marco de registro. En el proyecto en el que participé, el código antiguo de C ++ tenía una interfaz COM de Windows para escribir los mensajes de registro que utilizaba el appender personalizado.

Otra forma sería usar C ++ / CLI para crear el appender personalizado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top