示例#1
0
        /// <summary>
        /// Registra el inicio de un método, guarda la hora actual y cada parametro especificando
        /// nombre, tipo y valor. Se recomienda que esta sea la primera instrucción de cada método.
        /// Si se logea el inicio, es obligatorio logear el retorno aunque el método sea Void.
        /// </summary>
        /// <example>
        ///     public void Metodo1(int a, string b, bool c)
        ///     {
        ///         log.Inicio(a, b, c);
        ///         log.Retorno();
        ///     }
        ///
        ///     public void Metodo2()
        ///     {
        ///         log.Inicio();
        ///         log.Retorno();
        ///     }
        /// </example>
        /// <remarks>
        ///     <para>
        ///         <h2 class="groupheader">Registro de versiones</h2>
        ///         <ul>
        ///             <li>1.0.0</li>
        ///             <table>
        ///                 <tr style="font-weight: bold;">
        ///                     <td>Autor</td>
        ///                     <td>Fecha</td>
        ///                     <td>Descripción</td>
        ///                 </tr>
        ///                 <tr>
        ///                     <td>Marcos Abraham Hernández Bravo.</td>
        ///                     <td>11/11/2016</td>
        ///                     <td>Versión Inicial.</td>
        ///                 </tr>
        ///             </table>
        ///         </ul>
        ///     </para>
        /// </remarks>
        /// <param name="parametros">Lista de parametros del método actual.</param>
        private void _Inicio(params object[] parametros)
        {
            Llamada++;

            RegistroInLineTO registro = new RegistroInLineTO()
            {
                ThreadGUID  = ThreadGUID,
                MethodGUID  = _MethodGUID,
                Namespace   = Metodo.DeclaringType.Namespace,
                Clase       = Metodo.DeclaringType.Name,
                Metodo      = Metodo.ToString(),
                Correlativo = Llamada,
                Tipo        = Tipo.Inicio
            };

            foreach (ALogWriter writer in Writers)
            {
                if (writer.PermiteTipo(Tipo.Inicio))
                {
                    writer.Guardar(registro);
                }
            }

            int numParametro = 0;

            if (parametros != null && parametros.Length > 0)
            {
                foreach (ParameterInfo param in Metodo.GetParameters())
                {
                    Llamada++;
                    string valor = string.Empty;

                    try
                    {
                        valor = parametros[numParametro].ToJson(true);
                    }
                    catch (Exception e)
                    {
                        valor = "Error al transformar a Json - " + e.Message.Replace("\n", "\t");
                    }

                    RegistroInLineTO parametro = new RegistroInLineTO()
                    {
                        ThreadGUID     = ThreadGUID,
                        MethodGUID     = _MethodGUID,
                        Namespace      = Metodo.DeclaringType.Namespace,
                        Clase          = Metodo.DeclaringType.Name,
                        Metodo         = Metodo.ToString(),
                        NombreVariable = param.Name,
                        ValorVariable  = valor,
                        Correlativo    = Llamada,
                        Tipo           = Tipo.Parametro
                    };

                    foreach (ALogWriter writer in Writers)
                    {
                        if (writer.PermiteTipo(Tipo.Parametro))
                        {
                            writer.Guardar(parametro);
                        }
                    }
                    numParametro++;
                }
            }
        }