Re: registro de actividad de usuarios

From: "Alejandro D(dot) Burne" <alejandro(dot)dburne(at)gmail(dot)com>
To: "Gabriel Ferro" <gabrielrferro(at)yahoo(dot)com(dot)ar>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: registro de actividad de usuarios
Date: 2008-02-02 19:30:53
Message-ID: 8398dc6d0802021130m7e8f62cw192c1975b8cb269e@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 2/02/08, Gabriel Ferro <gabrielrferro(at)yahoo(dot)com(dot)ar> escribió:
>
>
> Efectivamente cada usuario tendra su propio nombre y clave, entonces deberia
> hacer casi todo a nivel del motor, la cosa es como registrar en una tablita
> lo siguiente:
>
> -El nombre de usuario
> -La fecha-hora de la operacion
>
> -La IP publica de la maquina usada (las pc pueden estar en la lan del server
> o conectarse por una VPN)
> -La aplicacion, de la forma "nombreaplicacion.proceso" donde proceso es un
> nombre generico como "agregardatos", "consultacomplejas1",
> "consultacomplejas2",etc y es simplemente una forma de nombrar o agrupar un
> conjunto de varias operaciones SQL.
> -La cadena sql ejecutada (en algunos casos)
> Todo se hace con instrucciones SQL desde VB6.
>
> Lo primero que se me ocurre seria hacerlo con triggers, de esta manera
> tambien controlaria algun usuario que esta accesando sin usar el programa a
> medida (no creo pero puede ser), pero como hacerlo.....
>
> si tengo por ejemplo un proceso que busca, insertar o actualiza, etc , es
> decir muchas instrucciones SQL a podria llamar a todas juntas
> "actualizarcompleja1" cuando disparo el trigger?, y como le paso a este los
> datos para llenar la tablita.
>
>
> habia pensado hacer algo asi
> CREATE OR REPLACE FUNCTION AUDITOR_USERS () RETURNS TRIGGER AS '
> DECLARE
> fecha timestamp;
> usuario varchar;
> aplicacion varchar ---- a esta no se como asignarle la aplicacion
> que ejecuto la consulta,
> -- ademas como identifico los grupos de operaciones/consultas?
> dirip as varchar
> BEGIN
> select into fecha current_timestamp(0);
> select into dirip inet_client_addr(); ------ AQUI ME DA ERROR NO SE
> COMO PASAR LA FUNCION A VARCHAR
> select into usuario user;
> INSERT INTO auditoria (FECHA,USUARIO,DIRIP,APLICACION)
> values (fecha,usuario,dirip,aplicacion);
> END;
> '
> LANGUAGE 'plpgsql' VOLATILE;
>
> pero sigo con el problema desde donde disparar el trigger..

Si queres guardar el valor de la ip como char con un simple cast lo
podes convertir en char, sino puedes crear un campo inet en la tabla
de log.
Personalmente lo que hago es hacer una tabla de logs paralela a la
tabla que quiero auditar donde almaceno usuario, fechahora, tipo de
accion (A/B/M) y en un campo text los valores que insertaron /
borraron y en el caso de una modificación el valor que tenía antes y
despues. Nunca se me planteó registrar desde que proceso lo hacen.
El trigger se ejecuta sobre el insert update o delete de la tabla en cuestión.

Saludos, Alejandro

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alejandro D. Burne 2008-02-02 19:36:55 Conexiones remotas desde internet
Previous Message Juan Caillava 2008-02-02 19:22:15 conexion desde internet!