|
Página 1 de 1
|
Logs De Informacion (Registro De Eventos)
Autor |
Mensaje |
sanchezdenis19
Usuario
Registrado: May 2013
Mensajes: 2
Edad: 35
|
Logs De Informacion (Registro De Eventos)
Soy un poco nuevo en esto de gambas y quisiera saber como programar un sencillo registro de eventos en gambas, que permita guardar inicio de sesion, cierre de sesion del usuario, cambios realizados, errores y fecha. algo parecido a esto, http://i.msdn.microsoft.com/dynimg/IC2728.png espero puedan ayudarme
última edición por sanchezdenis19 el Domingo, 19 May 2013, 05:11; editado 1 vez
|
#1 Domingo, 19 May 2013, 05:10 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Logs De Informacion (Registro De Eventos)
Hola
En el siguiente enlace tienes un artículo escrito por uno de nuestros usuarios donde se dan unas pautas básicas para la creación de un sistema de logs para aplicaciones. No es un ejemplo funcional ni el código está listo para usarse, pero te despejará algunas dudas y te dará alguna idea para implementarlo tu mismo.
http://foro.gambas-es.org/kb.php?mode=article&k=6
Desde luego, lo primero a tener en cuenta es el soporte donde vamos a almacenar el log, que puede ser en una base de datos o en ficheros de texto plano. Como no das más detalles, no podemos ayudarte con esto. Pero a medida que te vayan surgiendo dudas concretas puedes ir preguntando.
Saludos
=================== 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"
|
#2 Domingo, 19 May 2013, 12:34 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Logs De Informacion (Registro De Eventos)
Además de lo que te comenta jguardon, para el tema de errores esta la clase Error http://www.gambasdoc.org/help/comp/gb/error?es, que ademas de darte el numero de error, texto del error, en que linea se ha producido, tambien te puede dar la pila de los procedimientos que se estaban ejecutando.
Todo esta información es muy util para cuando este testeando un programa, para saber por qué y dónde ha ocurrido un error.
Yo lo uso creando un formulario, que es llamado mediante la instruccion Catch, http://www.gambasdoc.org/help/lang/catch?es
Este formulario me muestra toda la información y que el usuario pueda pegar al portapapeles para que me lo mande por correo la incidencia...
Saludos
última edición por jsbsan el Domingo, 19 May 2013, 21:14; editado 1 vez
|
#3 Domingo, 19 May 2013, 21:09 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Logs De Informacion (Registro De Eventos)
Todas mis aplicaciones profesionales llevan un sistema de log propio. El tema se puede resumir en:
1.- Todas las tablas llevan dos campos al final usr un varchar(20) y fmod un datetime.
En todos los registros de almacena el nick del usuario que modifica o crea y la fecha y hora en la que lohace.
2.- Todos los formularios de registro único, añaden un label que indica "Última moficiación efectuada por [fulano] el [dia y hora]"
3.- Hay una tabla en la base de datos de control que almacena algo así como:
usuario: fulano
fecha: fecha y hora
tipo: Modifica Registro
Datos: nombre campo1: contenido grabado
nombre campo2: contenido grabado
nombre campo3: etc. etc.
Y por supuesto funciones estándar de grabación de la base de datos que hacen todo eso de forma automática.
El beneficio es doble: Por un lado disuade a los usuarios de hacer tonterías, sabiendo que todo queda registrado.
Por otro lado me ha servido para hacer seguimientos de responsabilidad y recuperación de datos en caso de desastre de datos en los servidores.
El objetivo para mí es la integridad y seguimiento de lo que ocurre con las bases de datos, no el control de los usuarios, pero se puede moficiar fácilmente.
Si te interesa puedo pasar algún código por si te vale.
Saludos.
|
#4 Domingo, 19 May 2013, 21:21 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Logs De Informacion (Registro De Eventos)
No había visto la imagen que enlazas. Sí, lo que te digo es bastante parecido. te pongo la imagen de la consulta que se hace en una de mis aplicaciones (censurada, que son datos reales)
Lo que ocurre es que mi sistema está imbricado con mis aplicaciones, no es algo que puedas poner o quitar como si enlazaras un módulo o algo así.
Tienes que usar las funciones de grabación estándar que para ello creé. Por ejemplo, aquí tienes un extracto de la que uso para crear un registro:
Public sub creaRegistro(tabla As String, oContenedor As Object, Optional conec As Connection)
Dim rsDatos As Result
Dim lret As Variant
Dim f As ResultField
Dim cad As String
Dim rs As Result
lret = True
If Not conec Then conec = mcomun.datos
Try conec.Close
Try conec.Open
rsDatos = conec.create(tabla)
rsDatos = pasacampos(oContenedor, rsDatos)
Try rsDatos["usr"] = mcomun.usuario.nick 'Aquí se graba el usuario que modifica, se pone el try por si la tabla no contempla logs
Try rsDatos["fmod"] = Now 'Aquí se graba la fecha y hora de la modificación
For Each f In rsdatos.Fields 'Aquí se almacena con un bucle los nombres de los campos y los datos que se graban
cad &= f.name & ": " & rsDatos[f.name] & "\n"
Next
rsDatos.Update
conec.Commit
mcomun.hlog("Añade en " & tabla, cad) 'Aquí se llama a la función mcomun.hlog, que graba en la tabla de Log el rastro de la operación realizada
Catch
Message("Error: " & Error.Text & "\nEn: " & Error.where)
End
Es una función que recibe un objeto contenedor (normalmente un formulario) y crea con él (apoyándose en la función pasacampos que no te incluyo ahora) un registro en la base de datos. Puedes ver remarcado con comentarios lo que afecta al asunto que tratamos del log.
Espero que no sea demasiado complejo o caótica mi forma de programar.
Saludos
|
#5 Domingo, 19 May 2013, 21:38 |
|
|
sebikul
Sebastian
Programador
Registrado: Julio 2012
Mensajes: 113
Edad: 30 Ubicación:
|
Re: Logs De Informacion (Registro De Eventos)
Pura casualidad
Hace 20 minutos agregue al repositorio svn un nuevo componente para la creación de logs. En la lista gambas-users envié una simple explicación de como usarlo. Con un poco de creatividad solo debes analizar las lineas por separado y dividir los datos en columnas. En caso de que no estés suscrito aqui puedes ver el email. Si no hablas ingles dime así lo traduzco.
Espero que se aproxime a lo que estabas buscando!
|
#6 Lunes, 20 May 2013, 03:53 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Logs De Informacion (Registro De Eventos)
Citar: Si no hablas ingles dime así lo traduzco.
Yo por lo menos te lo agradecería, con el google traduce no me llego a enterar...
|
#7 Martes, 21 May 2013, 06:00 |
|
|
sanchezdenis19
Usuario
Registrado: May 2013
Mensajes: 2
Edad: 35
|
Re: Logs De Informacion (Registro De Eventos)
Muchas gracias por las referencias, probare...
|
#8 Miercoles, 22 May 2013, 09:53 |
|
|
sebikul
Sebastian
Programador
Registrado: Julio 2012
Mensajes: 113
Edad: 30 Ubicación:
|
Re: Logs De Informacion (Registro De Eventos)
Perdón por la demora, pero recién ahora tengo tiempo para hacerlo. Solo he traducido las partes mas importantes.
Citar:
El componente provee una API flexible para el registro de eventos durante el tiempo de ejecución.
La salida por defecto es stdout, sin embargo, se puede redirigir a un archivo al crear una instancia de la clase Logger.
Provee 5 niveles de severidad: Critical, Error, Warning, Info, Debug
Se puede controlar la salida indicando el nivel mínimo de severidad requerido para que un mensaje sea impreso. Por ejemplo, si el nivel mínimo es Warning, solo Warning, Error y Critical son impresos (o guardados al archivo)
Al crear una instancia, se le puede pasar una cadena que le dice al Logger como van a estar formateados los mensajes. Una etiqueta se representa como $(TAG). La cadena por defecto es:
[$(now)] [$(levelname)] [$(callLocation)] $(message)
De esta forma, el mensaje "Starting logger" se vería de esta forma:
[05/20/2013 02:13:46.267] [WARNING] [MTest.Main.9] Starting logger
Las siguientes etiquetas están disponibles
$(message) : El mensaje pasado
$(callLocation) : La ubicación de donde se llamo al Logger. En la forma de FILE.FUNCTION.LINE (mira el ejemplo)
$(callLine) : Ídem anterior, pero solo el numero de linea.
$(callFile) : Ídem pero solo el nombre del fichero
$(callFunction) : Ídem pero solo el nombre de la función
$(now) : La fecha completa, equivalente a Now()
$(date) : La fecha según Date(Now)
$(time) : El tiempo según Time(Now)
$(ptimer) : El tiempo desde que se inicio la aplicación, con precisión en ms
$(ptimerint) : Ídem anterior pero con precisión en segundos
$(levelno) : El nivel de severidad del mensaje (entero)
$(levelname) : El nombre del nivel de severidad. Uno de: CRITICAL,ERROR, WARNING,INFO,DEBUG
$(version) : La versión de la aplicación
$(gbversion) : La versión del interprete de Gambas
$(host) : El hostname de la maquina
$(pid) : El pid del proceso
Usarlo es bastante simple
Dim oDumb As New Logger
oDumb("Starting logger")
|
#9 Miercoles, 22 May 2013, 23:23 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
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
|
|
|
|
|