/// <summary> /// Añade un elemento de log (y lanza el evento) /// </summary> public LogModel Log(BlockLogModel block, LogModel.LogType type, string message, [CallerFilePath] string fileName = null, [CallerMemberName] string methodName = null, [CallerLineNumber] int lineNumber = 0) { // Guarda el log LastLog = new LogModel(GetLastBlock(block), type, message, fileName, methodName, lineNumber); // Devuelve el elemento creado return(LastLog); }
/// <summary> /// Obtiene el bloque sobre el que se debe añadir el log /// </summary> private BlockLogModel GetLastBlock(BlockLogModel parent) { // Obtiene el último bloque de la cola si no se le ha pasado ninguno if (parent == null && _blocks.Count > 0) { parent = _blocks.Peek(); } // Devuelve el último bloque return(parent); }
/// <summary> /// Añade un mensaje de error /// </summary> public LogModel Error(BlockLogModel block, string message, Exception exception = null, [CallerFilePath] string fileName = null, [CallerMemberName] string methodName = null, [CallerLineNumber] int lineNumber = 0) { LogModel item = Log(block, LogModel.LogType.Error, message, fileName, methodName, lineNumber); // Asigna la excepción item.Exception = exception; // Devuelve el log creado return(item); }
/// <summary> /// Añade un mensaje de progreso /// </summary> public LogModel Progress(BlockLogModel block, string message, long actual, long total, [CallerFilePath] string fileName = null, [CallerMemberName] string methodName = null, [CallerLineNumber] int lineNumber = 0) { LogModel item = Log(block, LogModel.LogType.Progress, message, fileName, methodName, lineNumber); // Asigna los datos de progreso item.ActualProgress = actual; item.TotalProgress = total; // Devuelve el elemento de log creado return(item); }
/// <summary> /// Añade un bloque /// </summary> public BlockLogModel CreateBlock(BlockLogModel parent, LogModel.LogType type, string message, [CallerFilePath] string fileName = null, [CallerMemberName] string methodName = null, [CallerLineNumber] int lineNumber = 0) { BlockLogModel block = new BlockLogModel(Context, GetLastBlock(parent)); // Añade el bloque a la cola Enqueue(block); // Añade el log Log(block, type, message, fileName, methodName, lineNumber); // Devuelve el bloque generado return(block); }
/// <summary> /// Añade una aserción /// </summary> public LogModel Assert(BlockLogModel block, bool withError, string message, [CallerFilePath] string fileName = null, [CallerMemberName] string methodName = null, [CallerLineNumber] int lineNumber = 0) { if (withError) { return(AssertError(block, message, fileName, methodName, lineNumber)); } else { return(AssertCorrect(block, message, fileName, methodName, lineNumber)); } }
internal BlockLogModel(ContextModel context, BlockLogModel parent = null) { Context = context; Parent = parent; if (parent == null) { Level = 0; } else { Level = parent.Level + 1; } }
public LogModel(BlockLogModel parent, LogType type, string message, [CallerFilePath] string fileName = null, [CallerMemberName] string methodName = null, [CallerLineNumber] int lineNumber = 0) { // Propiedades del log Parent = parent; Type = type; Message = message; if (parent == null) { Level = 0; } else { Level = parent.Level + 1; } // Asigna los datos del método de llamada FileName = fileName; MethodName = methodName; LineNumber = lineNumber; }
/// <summary> /// Añade un mensaje de depuración /// </summary> public LogModel Debug(BlockLogModel block, string message, [CallerFilePath] string fileName = null, [CallerMemberName] string methodName = null, [CallerLineNumber] int lineNumber = 0) { return(Log(block, LogModel.LogType.Debug, message, fileName, methodName, lineNumber)); }
/// <summary> /// Encola un bloque /// </summary> internal void Enqueue(BlockLogModel block) { _blocks.Push(block); }