Tengo una aplicación de servicio que al inicio lee un archivo XML e inicia un subproceso para cada entrada en el archivo XML. Cada subproceso crea una instancia de una clase de trabajador que requiere un registrador para registrar cualquier salida en un archivo de registro específico de subprocesos.Inicio de sesión en un archivo de registro individual para cada subproceso individual
En los servicios app.config tengo los ajustes de configuración log4net configurado para utilizar un appender XML y el archivo se especifica como un PatternString como se muestra abajo:
<appender name="XmlAppender" type="log4net.Appender.FileAppender">
<file type="log4net.Util.PatternString" value="D:\Temp\Logs\%property{LogName}.log" />
<immediateFlush value="true"/>
<appendToFile value="true" />
<layout type="log4net.Layout.SimpleLayout" />
</appender>
En un método hilo bloqueado para cada instancia de la clase trabajadora creada Obtengo el registrador usando el método log4net.LogManager.GetLogger("MyLogger")
y luego configuro la propiedad actual de los hilos de la propiedad PatternStrings LogName usando ThreadContext.Properties["LogName"] = "Log name prefix"
.
Todos los archivos se crean pero cuando se llama al registrador, simplemente registra todos los mensajes en un archivo aparentemente aleatorio.
He buscado durante bastante tiempo tratando de encontrar una solución o algunas respuestas a lo que estoy haciendo mal, pero no he tenido suerte.
¿Alguien tiene alguna idea de por qué sucede esto?
¡Gracias! Tuve el mismo problema con el enhebrado y el inicio de sesión en diferentes archivos. Revisé muchas publicaciones y soluciones, pero solo esta me abrazó. –
Muchas gracias ... Este enfoque resolvió mi problema ... – Emerson