Dicas para registrar logs do sistema

Pessoal estou disponibilizando o sistema de log, bem simples que eu fiz…

Contendo a estrutura do banco e a aplicação de consulta dos logs.

http://www.4shared.com/file/zDaMCjsr/Segurana.html

Tem que ajustar conforme os evendos, que vc quer fazer o log.

Ex. No evento onAfterUpdate (Após Atualizar) o cadastro de cliente, coloca o seguinte código.

//data e hora do log
$datahora = date("Y-m-d H:i:s");	

//ip do log	
$ip = $_SERVER['REMOTE_ADDR'];	

//ação do log(Acesso, Exclusão, Atualização, Inserção)
$acao = 'Atualização';	

//Rotina acessada
$rotina = 'Cadastro de Clientes';

//historico, O que alterou, excluiu, ou acessou... adaptar conforme o formulario	
$historico = 'Atualizou o cliente ' . {campo_nome_cliente};

//Insere o log no banco de dados	
sc_exec_sql("INSERT INTO log (login, data, hora,ip, acao, rotina, historico) 
VALUES('[sm_global_login]', '$datahora', '$datahora',
         '$ip', '$acao', '$rotina', '$historico')");

Se alguém tiver alguma idéia para melhorar, posta ai!!!

Espero ter ajudado…

como sugestão, falar a verdade, eu comecei a usar Trigger no Mysql. é show de bola… muito mais rapido e eficiente principalmente para logs de sistemas… tem no forum posts sobre o assunto…dá uma olhada…

Acho que pra quem ta começando é uma ótima pedida.
Foi mais ou menos o que fiz por aqui.

=D

alguem já criou log parecido:
Em uma consulta, toda vez que a pessoa clicar no campo arquivo (tipo: documento - nome do arquivo), registra data hora do clique?

Na verdade assim crio o log dos downloads realizados.

Já fiz utilizando um controle… mas será que tem algo mais simples?

Waae, eu também não encontrei nenhum evento, que ocorre ao clickar no campo do tipo “arquivo” na Grid.

Acredito que a unica forma seria fazer uma ligação ex. do tipo controle mesmo, da mesma forma que vc já fez rsrs

Se alguém tiver alguma ideia posta ai, que eu vou ter que implementar isso também no meu modulo de gerenciamento de arquivos;

Você pode incluir no log a pagina que o usuario fez a acao incluindo $_SERVER[‘SCRIPT_FILENAME’] tambem (no lugar da //Rotina acessada $rotina = ‘Cadastro de Clientes’:wink:

Ajuda na hora de você saber a pagina pra dar a manutenção ou saber onde o usuario executou tal acao vista no log.

vc tem que ter um script.php com o header alterado para download de arquivo, e nele vc fazer o registro no log.

No seu link deve chamar esse script passando como parâmetro o arquivo de download.

Eu tenho uma biblioteca que faz isso, com uma adaptação ela pode fazer o que você precisa.

Vou disponibilizá-la no scriptcaseajax.com.br

Segue link para pegar script que gera outro script em produção para fazer download.
Entendo aqui que seu problema não é o download em si, mas o registro do clique, isso deve resolver.

http://www.scriptcaseajax.com.br/news.php?item.44.3

Você pode criar um campo manualmente (exemplo check box), cria um evento ajax onclick, inspeciona esse código com chrome, pega o valor da onclick do campo, esconde ele, e usa esse valor no <a href=>…, nesse evento ajax, você usa as macros do sc para gravar o log e escuta o script para download do arquivo.

ou no <a href= vc passa a url de uma app blank abrindo num popup minimizado , e nessa blank vc aciona o download.