La mejor manera de establecer dinámicamente una ruta de archivo de apéndice
Estoy tratando de encontrar a alguien más inteligente que yo para validar alguna sintaxis que escribí. La idea es configurar el nombre de archivo de mi RollingFileAppender con el nombre del ensamblado para que sea más reutilizable para mis proyectos.
He vistoeste artículo SO anterior pero no fue exactamente capaz de responder mi pregunta ...
Me costó mucho entender los componentes internos de Log4net y esto es lo que se me ocurrió (que reside en el archivo Global.asax - método Application_Start):
// Bind to the root hierarchy of log4net
log4net.Repository.Hierarchy.Hierarchy root =
log4net.LogManager.GetRepository()
as log4net.Repository.Hierarchy.Hierarchy;
if (root != null)
{
// Bind to the RollingFileAppender
log4net.Appender.RollingFileAppender rfa =
(log4net.Appender.RollingFileAppender)root.Root.GetAppender("RollingLogFileAppender");
if (rfa != null)
{
// Set the file name based on the assembly name
string filePath =
string.Format("~/App_Data/{0}.log", GetType().Assembly.GetName().Name);
// Assign the value to the appender
rfa.File = Server.MapPath(filePath);
// Apply changes to the appender
rfa.ActivateOptions();
}
}
¿Alguien puede decirme, 'esto es horrible' o 'esto debería funcionar bien'? Además, si configuro el archivo dinámicamente, ¿puedo esperar que el comportamiento de log4net gire los archivos según la configuración del archivo log4net.config?
¡Muy apreciado