Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Log4Gambas, Clase Para El Manejo De Trazas [Código Actualizado]
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Log4Gambas, Clase Para El Manejo De Trazas [Código Actualizado] 
 
Chicos,

Este es  un aporte para todos los compañeros gamberanos, gambinos, gamberos, etc.....

He creado una clase pequeña que permite generar la traza de una aplicación ya sea por consola o en un archivo de log.
La idea es bastante simple pero a la vez útil. Pensando en log4Java o Log4Net. (no es tan pro, pero se hace lo que se puede).

Espero les sea de utilidad

[2017-10-19] Actualización del código, cambie las variables string por un arreglo que contiene las glosas.


Así se debe instanciar


Private oLog As Log4Gambas

Public Sub Main()

  Dim oPrincipal As Principal
  Dim sTexto As String = ("Se detecto un problema que detendra la Aplicación")

  oLog = New Log4Gambas("mInicio")

  oLog.Info("Revision primera de existencia de directorio y archivos de trabajo")
  RevisionDirectorioTrabajo()

  oPrincipal = New Principal
  oPrincipal.Show()

Catch
  oLog.Error(sTexto)
  Message.Error(sTexto)

End


Codigo Fuente
' gambas class file

'
'======================================================================================================
'  Clase Log4Gambas
'  Creador  : Marcos Sepulveda
'  web      : EntornoLinux.blogspot.cl
'  Correo   : sepulvedamarcos@gmail.com
'  Telegram : @sepulvedamarcos
'
'  Esta clase tiene por objetivo permitir la generacion de trazas para el
'  seguimiento de los sucesos de un aplicativo.
'
'  Los niveles de mensajes en orden de jerarquia son:
'     Ninguno     = 0 No dejara trazas de log
'     Debug       = 1 Dejara trazas desde el nivel Debug para adelante (Debug, Info, Alerta, Error, Fatal)
'     Informativo = 2 Dejara trazas desde el nivel Informativo para adelante (Info, Alerta, Error, Fatal)
'     Alerta      = 3 Dejara trazas desde el nivel Alerta para adelante (Alerta, Error, Fatal)
'     Error       = 4 Dejara trazas desde el nivel Error para adelante (Error, Fatal)
'     Fatal       = 5 Dejara trazas del nivel Fatal
'
'  Los Tipos de salida son
'     Ninguno     = 0 Define que no se ganerara log
'     Archivo     = 1 Define que se generara el log en un archivo ubicado en la ruta del Setting de la aplicacion
'     Consola     = 2 Define que los mensajes seran enviados a la consola. Se debe ejecutar la aplicacion desde consola para verlos
'
'
' * Esta libreria necesita de parametros en el archivo Settings de la aplicación
'   donde es ejecutada
'
'   Global/NivelLog  = La key debe ser un valor constante de niveles de error -> Por defecto Ninguno
'   Global/SalidaLog = La key debe ser un valor constante de salidas del log  -> Por defecto Ninguno
'   Global/TamanoLog = La Key debe tener un valor numerico expresado en Megas -> Por defecto 1 = 1 Mega
'======================================================================================================
'

Private $sNombreInstacia As String                  '' Nombre de la instancia que llama
Private $iNivel As Integer                          '' Nivel de salida
Private $iSalida As Integer                         '' Tipo de Salida
Private $sRuta As String                            '' Ruta del Archivo
Private $sNombre As String                          '' Nombre del archivo
Private $iTamano As Integer                         '' Tamaño del archivo en megas

'Glosas para enviar
Public $aNivel As String[] = ["Ninguno", "Debug", "Informativo", "Alerta", "Error", "Fatal"]
'Niveles de error
Public Enum NivelNinguno = 0, NivelDebug, NivelInformativo, NivelAlerta, NivelError, NivelFatal
'Salida del log
Public Enum SalidaNinguno = 0, SalidaArchivo, SalidaConsola

Private $sMensaje As String = ("Problemas al crear el archivo de Log4Gambas")

Public Sub _new(sNombre As String) ''Metodo constructor, necesita el nombre de la instancia que genera el log (comunmente el nombre del formulario, Modulo o Clase)

  $sNombreInstacia = sNombre

  'Chequeo de Existencia de archivo Settings
  'RevisarSettings()

  $iNivel = CInt(Settings["Global/NivelLog", NivelNinguno])
  $iSalida = CInt(Settings["Global/SalidaLog", SalidaNinguno])
  $iTamano = CInt(Settings["Global/TamanoLog", "1"])
  $sRuta = File.Dir(Settings.Path) &/ Application.Name
  $sNombre = Application.Name & ".log"

End

Public Sub Debug(sTexto As String) '' Metodo para enviar mensajes de nivel Debug. \n Se le debe enviar el Texto del Mensaje como parametro

  ImprimeMensaje(NivelDebug, sTexto)

End

Public Sub Info(sTexto As String) '' Metodo para enviar mensajes de nivel Info. \n Se le debe enviar el Texto del Mensaje como parametro

  ImprimeMensaje(NivelInformativo, sTexto)

End

Public Sub Alerta(sTexto As String) '' Metodo para enviar mensajes de nivel Alerta . \n Se le debe enviar el Texto del Mensaje como parametro

  ImprimeMensaje(NivelAlerta, sTexto)

End

Public Sub Error(sTexto As String) '' Metodo para enviar mensajes de nivel Error . \n Se le debe enviar el Texto del Mensaje como parametro

  ImprimeMensaje(NivelError, sTexto)

End

Public Sub Fatal(sTexto As String) '' Metodo para enviar mensajes de nivel Fatal . \n Se le debe enviar el Texto del Mensaje como parametro

  ImprimeMensaje(NivelFatal, sTexto)

End

Private Sub ImprimeMensaje(iTipo As Integer, sTexto As String) ''Metodo privado que verfica donde enviar el log y lo ejecuta

  Dim oArchivo As File
  Dim sLinea As String

  $iNivel = CInt(Settings["Global/NivelLog", NivelNinguno])
  $iSalida = CInt(Settings["Global/SalidaLog", SalidaNinguno])
  $iTamano = CInt(Settings["Global/TamanoLog", "1"])
  $sRuta = File.Dir(Settings.Path) &/ Application.Name
  $sNombre = Application.Name & ".log"

  sLinea = "[" & Format(Now(), "dd-mm-yyyy hh:nn:ss") & "]"  'Agregamos la Fecha
  sLinea &= "[" & $sNombreInstacia & "]"                     'Agregamos la Instancia que genera
  sLinea &= "[" & $aNivel[iTipo] & "]"
  sLinea &= "[" & sTexto & "]"

  If $iNivel <= iTipo Then

    Select Case $iSalida
      Case SalidaConsola
        ' Envio de mensajes a la consola
        Print sLinea

      Case SalidaArchivo
        ' Revision del Tamaño del archivo log
        RevisionTamano()
        'Revision de Existencia de ruta
        RevisionRuta()
        ' envio de mensajes a un archivo log
        oArchivo = Open $sRuta &/ $sNombre For Write Append
        Write #oArchivo, sLinea & gb.CrLf

      Case SalidaNinguno

        'Nada que hacer.

    End Select

  Endif

Catch
  Error.Raise($sMensaje & "[" & Error.Text & "]")

End

Private Sub RevisionTamano()

  'Verifico el peso del archivo log y es necesario se borra
  If Exist($sRuta &/ $sNombre) Then
    If Stat($sRuta &/ $sNombre).Size >= (CInt($iTamano) * 1000000) Then
      Kill $sRuta &/ $sNombre
    Endif
  Endif

Catch
  Error.Raise($sMensaje & "[" & Error.Text & "]")

End

Private Sub RevisionRuta()

  If Not IsDir($sRuta) Then
    Mkdir $sRuta
  Endif

Catch
  Error.Raise($sMensaje & "[" & Error.Text & "]")

End
 

 




===================
------
Telegram : @sepulvedamarcos
 
última edición por chaskux el Viernes, 20 Octobre 2017, 15:13; editado 2 veces 
chaskux - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Log4Gambas, Clase Para El Manejo De Trazas 
 
Estupendo trabajo, aunque no sé si ya viste esto:

http://gambaswiki.org/wiki/comp/gb.logging


Es una clase de logging bastante completa que está como componente desde la versión 3.5 de gambas. ¿Acabas de reinventar la rueda? Bueno, lo importante es aprender y aportar el conocimiento.

Muchas gracias, chascux, como siempre  
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Log4Gambas, Clase Para El Manejo De Trazas 
 
JAJAJAJJA.....

Había visto esa componente pero mal interprete el  nombre, pensaba que era para algún tipo de identificador de usuarios o algo parecido... jajajaja.... cosas que uno se imagina....

en todo caso, ahí les queda... es una clase bastante básica la que escribí pensando en las ya mencionada log4net, que fue en la que me base... la que claro esta también tiene muchos mas métodos, propiedades, etc... pero mi conocimiento de uso en proyectos de desarrollo en general, me dice que no usas mas que estas pequeñas partes de código.

la naturaleza humana (y en linux por lo demás) es reinventar la rueda varias veces... jejejejeje...

saludos
 




===================
------
Telegram : @sepulvedamarcos
 
chaskux - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Log4Gambas, Clase Para El Manejo De Trazas [Código Actualizado] 
 
Chicos, aplique algunas mejoras a la clase.

cualquier duda de como usarla me contactan por aca o por telegram.... saludos          
 




===================
------
Telegram : @sepulvedamarcos
 
chaskux - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Log4Gambas, Clase Para El Manejo De Trazas [Código Actualizado] 
 
chaskux escribió:  
Chicos, aplique algunas mejoras a la clase.

cualquier duda de como usarla me contactan por aca o por telegram.... saludos          

Ese es el problema, chaskux. ¿No te gusta escribir? El código lo has pillado en el foro y dices que lo has mejorado ¿En qué? ¿Por qué no aportas tus "mejoras" al foro?
Creo que todo rollo vía telegram y similares empobrece el foro y con ello nos empobrece a todos.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Log4Gambas, Clase Para El Manejo De Trazas [Código Actualizado] 
 
shordi escribió:  
chaskux escribió:  
Chicos, aplique algunas mejoras a la clase.

cualquier duda de como usarla me contactan por aca o por telegram.... saludos          

Ese es el problema, chaskux. ¿No te gusta escribir? El código lo has pillado en el foro y dices que lo has mejorado ¿En qué? ¿Por qué no aportas tus "mejoras" al foro?
Creo que todo rollo vía telegram y similares empobrece el foro y con ello nos empobrece a todos.



Que tal shordi.
El codigo lo escribi yo en uno de los proyectos que estoy trabajando, ahora si alguien hizo algo igual pues bien.

El codigo del post esta actualizado por mi y puesto aca. Por si nose entendio lo que quise decir.
Y claro que me gusta escribir, claro que para cosas que aporten.

Siempre esta la opcion de escribir en el foro. Y hacer comentarios y demas. Pero si alguien quiere prefuntar algo rapido, cual seria el problema que me contacte, ademas tenemos un grupo en telegram donde varios de aca estamos, no digamos que se escribe mucho, pero existe. En fin... Si te incomoda es una lastima.
Saludos
 




===================
------
Telegram : @sepulvedamarcos
 
chaskux - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Log4Gambas, Clase Para El Manejo De Trazas [Código Actualizado] 
 
shordi escribió:  

Ese es el problema, chaskux. ¿No te gusta escribir? El código lo has pillado en el foro y dices que lo has mejorado ¿En qué? ¿Por qué no aportas tus "mejoras" al foro?
Creo que todo rollo vía telegram y similares empobrece el foro y con ello nos empobrece a todos.


Ooops!!! Qué ha pasado aquí?

Creo que chascux ha escrito y modificado su propio código que está en el primer post de este hilo, otra cosa es que Telegram pueda desviar la atención al foro, pero cada cosa para lo que es. Telegram es para charlar y el foro para debatir y enseñar. No es algo que me preocupe, pero bueno, allá cada cual.

Y por cierto, en Telegram no veo ningún código publicado al respecto, por eso no sé el motivo de tu comentario, shordi...

Saludos y buen rollo
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Log4Gambas, Clase Para El Manejo De Trazas [Código Actualizado] 
 
Pido perdón. Es que entre el telegram y yo hay "algo personal", que decía Serrat. Dos foros de los que era socio, uno de libros y otro de cocina, se fueron a la mierda en cuanto se mezclaron con el telegram.
La gente tiende a levantar llamaradas en el telegram y trasladarlas al foro.
Luego los que no estamos en telegram sin saber de qué van los tiros lo pasamos muy mal...
Espero que este no sea el caso...
 




===================
No podemos regresar
 
última edición por shordi el Viernes, 20 Octobre 2017, 19:01; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Log4Gambas, Clase Para El Manejo De Trazas [Código Actualizado] 
 
shordi escribió:  
Pido perdón. Es que entre el telegram y yo hay "algo personal", que decía Serrat. Dos foros de los que era socio, uno de libros y otro de cocina, se fueron a la mierda en cuanto se mezclaron con el telegram.
La gente tiende a levantar llamaradas en el telegram y trasladarlas al foro.
Luego los que no estamos en telegram sin saber de qué van los tiros lo pasamos muy mal...
Espero que este no sea el caso...


Estimado, acepto las disculpas.

Agregar que somos tan pocos en el telegram que no da para flameswar... y de alguna manera hasta ahora hacemos referencia al foro....y como decía tampoco es muy activo que digamos.

Convengamos que escribiste desde la glándula ya que como dice JGuardon, al comienzo del post esta el código. Ahora bien para mayor claridad y aceptando el comentario, agregue una linea en el texto donde explico el cambio.

No hay problemas, y sigamos haciendo grande y útil el foro.
 




===================
------
Telegram : @sepulvedamarcos
 
chaskux - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Log4Gambas, Clase Para El Manejo De Trazas [Código Actualizado] 
 
chaskux escribió:  
.. y de alguna manera hasta ahora hacemos referencia al foro....y como decía tampoco es muy activo que digamos.

Convengamos que escribiste desde la glándula ya que como dice JGuardon, al comienzo del post esta el código. Ahora bien para mayor claridad y aceptando el comentario, agregue una linea en el texto donde explico el cambio.

No hay problemas, y sigamos haciendo grande y útil el foro.


yo  tengo tiempo que no visito el foro, sin embargo tambien por la poca vsion, en la lista gambas Cristof me pregunta sobre mi vison de los "connection profiles" y le respondo, que todos solo codifican pro hobbie

s escrbir en el foro es solo un hobbie este sera siempre suprimido por otro mucho mas entretenido y divertido.. puesto no es un compromiso..

por nde la historia de el foro que se disolvio por la popularidad de telegram fue debido a el poco compromiso...

yo intentare y como hacia antes tratare en lo posible colocar temas y codigo util aqui.. pero a medida el apoyo y falta de zyuda merme esto el foror estara condenado..
 



 
mckaygerhard - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Proyecto Cliente FTP Actualizado shordi Aplicaciones/Fragmentos de Código 20 Sabado, 05 Abril 2014, 19:31 Ver último mensaje
shordi
No hay nuevos mensajes Código De Clase Button Alguien Sabe Donde... v3ctor General 7 Martes, 12 Abril 2016, 14:01 Ver último mensaje
Invitado
No hay nuevos mensajes El Kernel Actualizado Fallo, ¿como Vuelvo... tincho Mundo Linux 9 Jueves, 16 Febrero 2017, 16:34 Ver último mensaje
tincho
No hay nuevos mensajes Clase Latex: Para Crear Documentos Y Repor... jsbsan Aplicaciones/Fragmentos de Código 43 Viernes, 17 Enero 2020, 21:05 Ver último mensaje
vuott
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron