He estado usando log4net para registrar los mensajes de registro de nuestro sitio web ASP.NET, y últimamente quería agregar información sobre la página/controlador donde ocurrió el error. Por lo tanto decidí añadir la siguiente línea a Global.asax:¿Cómo establecer la propiedad de contexto de log4net específica para una solicitud de ASP.NET?
void Application_BeginRequest(object sender, EventArgs e)
{
log4net.ThreadContext.Properties["page"] = HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath;
}
y como sabia añadí %property{page}
a mi patrón de conversión:
<conversionPattern value="%newline%date %-5level %property{page} - %message%newline%newline%newline" />
Esto funcionó bien para peticiones individuales. Pero luego noté en mis registros que la propiedad de la página puede cambiar durante una solicitud de ASP.NET. Tengo el inicio de sesión en un controlador ASHX, y en medio de su procesamiento, la propiedad de la página cambiará a un valor diferente que apunta a una página ASPX. Llegué a la conclusión de que hay otra solicitud en ASP.NET y se ejecuta BeginRequest
y la propiedad de página estática en log4net.ThreadContext
cambia a otro valor.
Ahora, me gustaría mantener la propiedad de la página por solicitud, para que pueda tener la ruta de la página de ejecución registrada en el registro de forma coherente. Traté de encontrar una respuesta, pero salí sin nada. ¿Cuál es la forma recomendada de resolver este problema? Estoy seguro de que esta es una funcionalidad muy básica del registro de eventos del servidor web.
Esto es genio. –