/// <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));
     }
 }
Exemplo n.º 7
0
 internal BlockLogModel(ContextModel context, BlockLogModel parent = null)
 {
     Context = context;
     Parent  = parent;
     if (parent == null)
     {
         Level = 0;
     }
     else
     {
         Level = parent.Level + 1;
     }
 }
Exemplo n.º 8
0
 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);
 }