2008-10-21 7 views
7

Tengo una aplicación de 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 bloqueara el archivo. Ingresé al modelo MinimalLock para log4net, pero no pude encontrar nada en log4cxx ... ¿Alguien sabe si se podría hacer y cómo?mezclando log4cxx y log4net

gracias de antemano,

Ernesto Cullen

Respuesta

4

pienso que usted podría encontrarse con problemas de concurrencia y de contención no importa qué configuración se utiliza, siempre y cuando usted está tratando de tener dos procesos diferentes ingrese a la misma 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, supongo que log4cxx tiene algo similar.

1

Incluso si la cuestión es bastante antiguo (y marcada como respondida) y es probable que ya haya terminado con su proyecto:

log4net y log4cxx son framworks de registro diferentes que no saben el uno del otro para que pueda No los configure para escribir en el mismo archivo. Solo uno de los framworks tendrá el archivo abierto para escribir, lo que sea primero.

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

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