[Php-avanzado] Log usuarios
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Dom Feb 2 15:21:48 ART 2014
Hola Ariel,
no, no es generar un log cada vez que se modifica una tabla.
Me estás enumerando una docena de actividades.
Si tu software tiene, por ejemplo, solo 10 tablas, registrar cada
INSERT, UPDATE y DELETE, son 3 actividades por tabla, lo que da 30 tipos
de registros diferentes (10 *3 = 30).
Esto es casi tres veces más esfuerzo que registrar solo la docena de
eventos interesantes!
Acá, al menos las veces que hubo que ponerle logs a los sistemas,
siempre lo más viable fue hacer como te sugerí en el mail anterior. Una
aplicación típica acá tiene al menos 30 tablas; el enfoque de todo da 90
logs diferentes, pero, a quién le importa registrar si aparece un tipo
de documento nuevo o una localidad nueva? En la práctica, lo útil es
mucho menos.
El enlace no me parece útil para tu caso. Registrar a nivel de
operación SQL es útil solo para poder hacer rollback de operaciones (o
ir hacia adelante y hacia atrás en el estado del sistema), pero no te da
ningún dato relevante si no sabés leer SQL.
Respecto a los menús, siempre es buena idea no mostrar lo que no se
puede hacer. Generalmente no es tan trivial como poner a la vista o no
un menú, ya que una UI decente te permitirá hacer ABM en la misma
pantalla, con lo que el acceso a dicha pantalla tiene que aparecer si
está permitida una de las 3 operaciones, pero si por ejemplo no se puede
agregar, el botón de insertar no aparecerá.
El dom, 02-02-2014 a las 03:40 -0200, Ariel Fernández escribió:
> Hola Leo !!!
>
>
>
> Sí, tu orientación está buena, con algo así podría sacar un listado de
> todas las operaciones que se realizaron sobre una entidad y así saber
> en qué momento sucedió determinada cosa y quién fue el ejecutor de la
> cosa.
>
>
> Y a lo que me refería es a poder guardar cada operación que realiza un
> usuario en el sistema. El sistema sería una aplicación web para unos
> pocos usuarios.
> Te pongo varios ejemplos para explicarme mejor:
> Necesitaría que el sistema guarde en una tabla, cuando un usuario....:
> _da de alta una entidad (por entidad entiéndase
> paciente/cliente/proveedor, etc)
> _da de baja una entidad
> _modifica una entidad
> _realiza una factura o nota de crédito o de débito
> _imputa un pago
> _genera un recibo de pago
> _genera un ajuste de stock
> _carga una observación en una factura
>
> _carga mercadería al stock
> _genera una lista de precios
> _modifica un precio
> _etc etc etc
>
>
> en definitiva, sería registrar cada operación que se realiza con cada
> tabla, no es así? es decir, cada vez que se produce un UPDATE o un
> INSERT o un DELETE en alguna tabla, que el sistema guarde qué usuario
> lo realizó, la fecha y la hora.
>
>
>
>
> espero que se entienda mejor, no es que necesite todo lo de los
> ejemplos, pero para que te des una mejor idea de lo que pretendía.
>
>
> No he encontrado mucha información al respecto, sólo un artículo que
> habla de "bitácora" acá:
> http://tavoberry.com/blog/crear-una-bitacora-en-mysql/
>
>
> Creés que eso que explican ahí puede llegar a ser útil ?
>
>
>
>
> Por otra parte, lo de la autentificación con sesiones, para terminar
> de entenderla, lo implementé en el sistemita del jardín, y logré
> comprender el proceso aún más.
> También me gustaría generar menúes condicionales según el nivel de
> acceso que tenga el usuario que se loguea. No sé, por ejemplo,
> Administrador, Operador Avanzado, Operador Básico....algo así. Para
> que, por poner algún ejemplo, sólo el administrador pueda modificar
> precios, o un operador básico sólo pueda sacar listados y facturar, y
> uno avanzado pueda hacer cŕeditos y dar de baja clientes...etc
> Algo así estimo que se implementaría con menúes condicionales, qué te
> parece?
>
>
>
>
>
>
>
>
> El 1 de febrero de 2014, 11:14, Leonardo Tadei - Pegasus Tech Supply
> <leonardot en pegasusnet.com.ar> escribió:
> Hola Ariel,
>
> querés registrar "procesos realizados", pero no sé a
> qué te referís
> exactamente con esto.
>
> A nivel de almacenamiento, lo mejor es tener una tabla
> con la acción o
> proceso (id, nombre) y otra que sea el registro de actividades
> (id,
> id_proceso, timestamp, nombre de usuario). No es complicado
> agregarle IP
> de conexión si el dato vale la pena.
>
> Esto después te permite filtrar fácilmente por proceso
> para buscar algo
> específico.
>
> Para la implementación, te hacés una función "log",
> que podría ponerse
> en un include_once() en el script que hace la autentificación,
> que si
> está bien hecha, estará al principio de todos los scripts del
> sistema,
> con lo que la tenés disponible en todas partes.
>
> Para usarla, en la parte del código que realiza cada
> proceso, la
> invocás:
>
> log($proceso, $usuario);
>
> Lo demás no hace falta porque está disponible desde
> cualquier contexto
> y será parte de la implementación de log()
>
> Hay veces en los que además de esto, vale la pena
> registrar un texto
> para dar detalles del proceso.
>
> Hay veces en las que tenés que registrar referencias a
> cosas del
> sistema, como Productos o Clientes. En este caso vale la pena
> agregar
> los ID de estas cosas y sus nombres, para poder filtrar por un
> cliente o
> por un producto específico y ver que le pasó.
>
> Espero haberte orientado.
>
>
> El vie, 31-01-2014 a las 14:07 -0200, Ariel Fernández
> escribió:
> > Hola gente, como andan?
> >
> > Una consulta para Leo si anda por ahí...
> > Quería saber como implementar un log o registro de
> actividades de
> > usuarios. Es decir, una aplicación es utilizada por varios
> usuarios, y
> > quisiera que quede registrado en algún lado, fecha, hora,
> procesos
> > realizados, etc etc. Cómo se puede implementar algo así de
> una manera
> > conveniente ?
> >
> > Desde ya, gracias.
> >
> > Saludos!
>
>
>
> --
> Leonardo Tadei
> leonardot en pegasusnet.com.ar
> Web: http://leonardo.tadei.com.ar
> Firma pública:
> http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>
> _______________________________________________
> Lista de correo: Php-avanzado
> Mensajes a la lista: Php-avanzado en pato2.fi.mdp.edu.ar
> Administración Web:
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
> Desubscripción:
> php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe
>
>
> _______________________________________________
> Lista de correo: Php-avanzado
> Mensajes a la lista: Php-avanzado en pato2.fi.mdp.edu.ar
> Administración Web: http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
> Desubscripción: php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe
--
Leonardo Tadei
leonardot en pegasusnet.com.ar
Web: http://leonardo.tadei.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
Más información sobre la lista de distribución Php-avanzado