¿Marco de registro para .NET que admite múltiples aplicaciones que escriben en el mismo archivo de registro continuo?

Tengo una aplicación de consola que escribe en un archivo de registro continuo. El problema es que varios procesos pueden llamar a la aplicación y existe la posibilidad de que se llame simultáneamente. La aplicación escribe en un archivo de registro. Actualmente estoy investigando el uso de log4net con la configuración MinimalLock:

<lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" />

pero he leído que pueden surgir problemas si un mensaje de registro de una instancia provoca un cambio mientras otra instancia intenta escribir en el mismo archivo.

¿Existe otro marco que admita este comportamiento, o tal vez una solución alternativa adecuada?

preguntado el 03 de mayo de 12 a las 16:05

1 Respuestas

tratan <lockingModel type="log4net.Appender.FileAppender+InterProcessLock"

Ahora, el siguiente código será seguro para subprocesos porque creará una clase estática de registrador para registrar información.

public static class Logger
{
    private static readonly Object obj = new Object();

    private static ILog _appLog = null;
    static Logger()
    {
        XmlConfigurator.Configure();
    }

    public static void Log(string loggername)
    {
        lock (obj)
        {
            _appLog = LogManager.GetLogger(loggername);
            _appLog.Error(....);
        }
    }
}

contestado el 03 de mayo de 12 a las 16:05

De las preguntas frecuentes: "RollingFileAppender ignora por completo el modelo de bloqueo al transferir archivos, simplemente no es compatible con este escenario". - ilegítimo

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.