/// <summary> /// Genera un nuevo registro en el Log. Utiliza los objetos del <see cref="IEnumerable{Log.LogArgumento}"/> /// como argumentos del método. /// </summary> /// <param name="logger">El logger que almacenará el nuevo registro.</param> /// <param name="descripcion">La descripción del evento a registrar.</param> /// <param name="clase">La clase a la cual pertenece el método que produjo el evento.</param> /// <param name="metodo">El nombre del método que produjo el evento.</param> /// <param name="resultado">Información acerca del resultado del evento.</param> /// <param name="argumentos">Los valores de los parámetros del método al momento del evento.</param> public static void NewLog(this ILogger logger, string descripcion, string clase, string metodo, Log.LogResultado resultado, IEnumerable <Log.LogArgumento> argumentos = null) { logger.Log(new Log { Id = Guid.NewGuid().ToString(), Fecha = DateTime.Now, Descripcion = descripcion, Ubicacion = new Log.LogUbicacion { Clase = clase, Metodo = new Log.LogMetodo { Nombre = metodo, Argumentos = argumentos ?? Enumerable.Empty <Log.LogArgumento>() } }, Resultado = resultado }); }
/// <summary> /// Genera un nuevo registro en el Log. Utiliza <see cref="MethodBase"/> para obtener los argumentos del método. /// </summary> /// <param name="logger">El logger que almacenará el nuevo registro.</param> /// <param name="descripcion">La descripción del evento a registrar.</param> /// <param name="clase">La clase a la cual pertenece el método que produjo el evento.</param> /// <param name="resultado">Información acerca del resultado del evento.</param> /// <param name="metodo">El método donde se produjo el evento.</param> /// <param name="argumentos">Los valores de los parámetros del método al momento del evento.</param> public static void NewLog(this ILogger logger, string descripcion, string clase, Log.LogResultado resultado, MethodBase metodo, params object[] argumentos) { int i = 0; var args = metodo .GetParameters() .Where(param => !param.IsOut) .Select(param => new Log.LogArgumento { Parametro = param.Name, TipoDato = param.ParameterType.ToString(), Valor = argumentos[i++]?.ToString() ?? "NULL" }) .ToList(); logger.Log(new Log { Id = Guid.NewGuid().ToString(), Fecha = DateTime.Now, Descripcion = descripcion, Ubicacion = new Log.LogUbicacion { Clase = clase, Metodo = new Log.LogMetodo { Nombre = metodo.Name, Argumentos = args } }, Resultado = resultado }); }