Example #1
0
        private void abrirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            modelo = new ResumenLog4MeModel();
            MostrarModelo(modelo);

            if (dialogoAbrir.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                Sesion.RutaArchivo = dialogoAbrir.FileName;

                Sesion.DialogoCarga.IniciarCarga(new DoWorkEventHandler((a, b) =>
                {
                    try
                    {
                        modelo             = Sesion.Analyzer.ObtenerResumen(Sesion.RutaArchivo);
                        Sesion.Excepciones = modelo.Excepciones;
                        MostrarModelo(modelo);

                        if (Sesion.Excepciones != null)
                        {
                            Invoke(new Action(() =>
                            {
                                if (Sesion.Excepciones != null)
                                {
                                    grid_Excepciones.DataSource = Sesion.Excepciones.Select(excepcion => new ExcepcionModel()
                                    {
                                        ThreadGUID = excepcion.Metodo.Hilo.ThreadGUID,
                                        Clase      = excepcion.Metodo.Clase,
                                        MethodGUID = excepcion.Metodo.MethodGUID,
                                        Metodo     = excepcion.Metodo.Nombre,
                                        Tipo       = excepcion.Tipo,
                                        Mensaje    = excepcion.Mensaje,
                                        StackTrace = excepcion.StackTrace,
                                        Data       = excepcion.Data
                                    }).ToList();
                                }
                            }));
                        }
                    }
                    catch (Exception ex)
                    {
                        Sesion.DialogoCarga.PermiteCerrar = true;
                        Sesion.DialogoCarga.Close();
                        MetroMessageBox.Show(this, ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }));
            }
        }
Example #2
0
        public ResumenLog4MeModel ObtenerResumen(string ruta)
        {
            ResumenLog4MeModel retorno = new ResumenLog4MeModel();

            retorno.Analisis.Inicio = DateTime.Now;
            retorno.Log.Nombre      = ruta;

            IDictionary <string, bool> Hilos = new Dictionary <string, bool>();

            IDictionary <string, RegistroInLineTO> flujoInicio  = new Dictionary <string, RegistroInLineTO>();
            IDictionary <string, RegistroInLineTO> flujoRetorno = new Dictionary <string, RegistroInLineTO>();

            IDictionary <string, RegistroInLineTO> metodoInicio  = new Dictionary <string, RegistroInLineTO>();
            IDictionary <string, RegistroInLineTO> metodoRetorno = new Dictionary <string, RegistroInLineTO>();

            Reader.LeerArchivo(ruta, (registro =>
            {
                if (!Hilos.ContainsKey(registro.ThreadGUID))
                {
                    Hilos.Add(registro.ThreadGUID, true);
                }

                if (!retorno.Log.Inicio.HasValue)
                {
                    retorno.Log.Inicio = registro.Fecha;
                }

                if (registro.Tipo == "Excepcion")
                {
                    retorno.ExcepcionesLanzadas++;
                    retorno.Excepciones.Add(new ExcepcionTO()
                    {
                        Tipo = registro.TipoExcepcion,
                        StackTrace = registro.StackTrace,
                        Mensaje = registro.Mensaje,
                        Data = registro.Data,
                        Metodo = new MetodoTO()
                        {
                            MethodGUID = registro.MethodGUID,
                            Hilo = new HiloTO()
                            {
                                ThreadGUID = registro.ThreadGUID
                            }
                        }
                    });
                }

                if (registro.Tipo == "Inicio")
                {
                    retorno.MetodosEjecutados++;

                    if (flujoInicio.ContainsKey(registro.ThreadGUID))
                    {
                        if (flujoInicio[registro.ThreadGUID].Fecha > registro.Fecha)
                        {
                            flujoInicio[registro.ThreadGUID] = registro;
                        }
                    }
                    else
                    {
                        flujoInicio.Add(registro.ThreadGUID, registro);
                    }

                    if (metodoInicio.ContainsKey(registro.MethodGUID))
                    {
                        if (metodoInicio[registro.MethodGUID].Fecha > registro.Fecha)
                        {
                            metodoInicio[registro.MethodGUID] = registro;
                        }
                    }
                    else
                    {
                        metodoInicio.Add(registro.MethodGUID, registro);
                    }
                }

                if (registro.Tipo == "Retorno")
                {
                    if (flujoRetorno.ContainsKey(registro.ThreadGUID))
                    {
                        if (flujoRetorno[registro.ThreadGUID].Fecha < registro.Fecha)
                        {
                            flujoRetorno[registro.ThreadGUID] = registro;
                        }
                    }
                    else
                    {
                        flujoRetorno.Add(registro.ThreadGUID, registro);
                    }

                    if (metodoRetorno.ContainsKey(registro.MethodGUID))
                    {
                        if (metodoRetorno[registro.MethodGUID].Fecha < registro.Fecha)
                        {
                            metodoRetorno[registro.MethodGUID] = registro;
                        }
                    }
                    else
                    {
                        metodoRetorno.Add(registro.MethodGUID, registro);
                    }
                }

                retorno.Log.Termino = registro.Fecha;
            }));
            retorno.FlujosEjecutados  = Hilos.Count;
            retorno.FlujoMasDemoroso  = ObtenerMasCostoso(flujoInicio, flujoRetorno, false);
            retorno.MetodoMasDemoroso = ObtenerMasCostoso(metodoInicio, metodoRetorno, true);
            retorno.Analisis.Termino  = DateTime.Now;
            return(retorno);
        }
Example #3
0
        public void MostrarModelo(ResumenLog4MeModel model)
        {
            Invoke(new Action(() =>
            {
                #region Tiempo Análisis
                lb_FechaInicioTiempoAnalisis.Text  = model.Analisis.Inicio.HasValue ? model.Analisis.Inicio.Value.ToString(FORMATO_FECHA_HORA, CultureInfo.InvariantCulture) : FECHA_HORA_DEFECTO;
                lb_FechaTerminoTiempoAnalisis.Text = model.Analisis.Termino.HasValue ? model.Analisis.Inicio.Value.ToString(FORMATO_FECHA_HORA, CultureInfo.InvariantCulture) : FECHA_HORA_DEFECTO;
                lb_TotalTiempoAnalisis.Text        = model.Analisis.Total.HasValue ? model.Analisis.Total.Value.ToString() : HORA_DEFECTO;
                #endregion Tiempo Análisis

                #region Tiempo Log
                lb_FechaInicioLog.Text  = model.Log.Inicio.HasValue ? model.Analisis.Inicio.Value.ToString(FORMATO_FECHA_HORA, CultureInfo.InvariantCulture) : FECHA_HORA_DEFECTO;
                lb_FechaTerminoLog.Text = model.Log.Termino.HasValue ? model.Analisis.Inicio.Value.ToString(FORMATO_FECHA_HORA, CultureInfo.InvariantCulture) : FECHA_HORA_DEFECTO;
                lb_TotalTiempoLog.Text  = model.Log.Total.HasValue ? model.Analisis.Total.Value.ToString() : HORA_DEFECTO;
                #endregion Tiempo Log

                #region Cuentas
                if (model.MetodosEjecutados > 0)
                {
                    int valor = model.MetodosEjecutados - model.ExcepcionesLanzadas;

                    this.chart1.Palette = ChartColorPalette.Pastel;
                    chart1.Series.Clear();

                    chart1.Legends.Add("");

                    Series serie = new Series()
                    {
                        ChartType = SeriesChartType.Doughnut
                    };

                    serie.Points.Add(new DataPoint(valor, valor)
                    {
                        LegendText = string.Format("{0} Correcto", valor),
                        Color      = Color.FromArgb(154, 205, 50)
                    });

                    serie.Points.Add(new DataPoint(model.ExcepcionesLanzadas, model.ExcepcionesLanzadas)
                    {
                        LegendText = string.Format("{0} Excepciones", model.ExcepcionesLanzadas),
                        Color      = Color.Red
                    });

                    chart1.Series.Add(serie);
                }
                #endregion Cuentas

                #region Flujo mas demoroso
                btn_ThreadGUIDFlujoMasDemoroso.Text  = model.FlujoMasDemoroso.ID;
                lb_FechaInicioFlujoMasDemoroso.Text  = model.FlujoMasDemoroso.Inicio.HasValue ? model.FlujoMasDemoroso.Inicio.Value.ToString(FORMATO_FECHA_HORA, CultureInfo.InvariantCulture) : FECHA_HORA_DEFECTO;
                lb_FechaTerminoFlujoMasDemoroso.Text = model.FlujoMasDemoroso.Termino.HasValue ? model.FlujoMasDemoroso.Termino.Value.ToString(FORMATO_FECHA_HORA, CultureInfo.InvariantCulture) : FECHA_HORA_DEFECTO;
                lb_TotalFechaFlujoMasDemoroso.Text   = model.FlujoMasDemoroso.Total.HasValue ? model.FlujoMasDemoroso.Total.Value.ToString() : HORA_DEFECTO;
                #endregion Flujo mas demoroso

                #region Método mas demoroso
                lb_MethodGUIDMetodoMasDemoroso.Text   = model.MetodoMasDemoroso.ID;
                lb_NomreMetodoMasDemoroso.Text        = model.MetodoMasDemoroso.Nombre;
                lb_FechaInicioMetodoMasDemoroso.Text  = model.MetodoMasDemoroso.Inicio.HasValue ? model.MetodoMasDemoroso.Inicio.Value.ToString(FORMATO_FECHA_HORA, CultureInfo.InvariantCulture) : FECHA_HORA_DEFECTO;
                lb_FechaTerminoMetodoMasDemoroso.Text = model.MetodoMasDemoroso.Termino.HasValue ? model.MetodoMasDemoroso.Termino.Value.ToString(FORMATO_FECHA_HORA, CultureInfo.InvariantCulture) : FECHA_HORA_DEFECTO;
                lb_TotalFechaMetodoMasDemoroso.Text   = model.MetodoMasDemoroso.Total.HasValue ? model.MetodoMasDemoroso.Total.Value.ToString() : HORA_DEFECTO;
                #endregion Método mas demoroso
            }));
        }