Estoy escribiendo una pequeña utilidad de conversión de archivos. Los archivos se convierten automáticamente cuando se sueltan en un directorio.Agregar/eliminar archivos de registro durante el tiempo de ejecución en NLog
Estoy usando NLog para el registro. Además de un archivo de registro central que se configura usando NLog.conf (y que recibe todos los mensajes generados), me gustaría crear un archivo de registro adicional para cada archivo de entrada, que tenga un nombre similar y contenga todos los mensajes de registro escritos durante el proceso de conversión.
Desafortunadamente, parece que no puedo encontrar la forma de agregar correctamente un nuevo objetivo de archivo junto con la regla apropiada durante el tiempo de ejecución. Quiero que todos los objetos Logger
escriban en el nuevo archivo de registro durante el proceso de conversión.
he intentado algo así como
var logfile = new NLog.Targets.FileTarget();
logfile.FileName = fileName + ".log";
logfile.KeepFileOpen = true;
logfile.Initialize();
var rule = new NLog.Config.LoggingRule("*", logfile);
NLog.LogManager.Configuration.LoggingRules.Add(rule);
NLog.LogManager.ReconfigExistingLoggers();
//
// Proceed with converting file
//
logfile.Flush();
NLog.LogManager.Configuration.LoggingRules.Remove(rule);
NLog.LogManager.ReconfigExistingLoggers();
Pero ningún archivo de registro fue creado.
¿Qué hice mal? ¿Alguna idea?
La línea con la reasignación es muy importante: LogManager.Configuration = config; – habakuk
Para aclarar ** La línea con la reasignación es muy importante: LogManager.Configuration = config; ** Esto es cierto debido a la forma en que NLog ha escrito los captadores y definidores para la propiedad de Configuración. No es bonito, pero tiene que establecerse nuevamente con un objeto cambiado; no puedes cambiar la propiedad directamente. – zshift
Tuve que reasignar la variable del registrador al final para que funcione: logger = LogManager.GetCurrentClassLogger(); – Henry