none
Como implementar uma tabela de LOG com todas as alterações feitas no vb.net RRS feed

  • Pergunta

  • Estou iniciando na programação agora, estou precisando criar uma funcionalidade de gerênciamento de Log de todas as alterações feitas por um usuário em meu sistema mas não sei como fazer isto no vb.net ou C#. Alguem poderia me ajudar?

    Att,
    Thiago Gambarra
    segunda-feira, 30 de novembro de 2009 12:40

Respostas

  • Eu utilizo o Log4Net. Ele simplifica muito a codificaçao de Trace. 
    É uma biblioteca free e tem a possibilidade se salvar os logs em diferentes formatos, por ex: no log de eventos do windows,em formato txt e em uma base de dados utilizando o appenderadonet

    Veja mais aqui:

    e sobre o appender aqui:
    e aqui:

    Att



    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    segunda-feira, 30 de novembro de 2009 14:02
    Moderador
  • Mas agora, se vc quer rastrear toda e qualquer alteraçao em todas as tabelas do seu sistema, ai é um problema de estrutura da sua base de dados.
    Eu precisei fazer isso para uma tabela apenas e a soluçao foi incluir uma coluna com a data e outra com status.
    Toda vez que o usuario incluia um registro, era feito um insert e a coluna status marcado com 0
    Se o usuario fizesse uma alteracao (update) eu marcava a coluna Status do registro antigo com 1 e incluia outro com as alteraçoes e com o status 0
    Se o usuario deletasse uma registro eu marcava somente o status com o valor 1.

    Se voce for ver, é mais ou menos o que um sistema de controle de versao faz.

    Veja o exemplo da ideia. A tabela abaixo armazena o codigo do cliente, nome e tipo. Date e Status sao meus campos de controle

    Isersao de registro
    ID Status Date                  Nome    Tipo
    1   0        1/1/2009 10:00  Willian    1

    Isersao de outro registro
    ID Status Date                  Nome    Tipo
    1   0        1/1/2009 10:00  Willian    1
    2   0        1/1/2009 10:01  Thiago    1

    Alteraçao (update) de um registro. (vou mudar o tipo do cliente 1 para 2)
    ID Status Date                  Nome    Tipo
    1   1        1/1/2009 10:00  Willian   1
    2   0        1/1/2009 10:01  Thiago   1
    1   0        1/1/2009 10:02  Willian   2

    Alteraçao (update) de um registro. (vou corrigir o nome do Cliente 1 )
    ID Status Date                  Nome    Tipo
    1   1        1/1/2009 10:00  Willian   1
    2   0        1/1/2009 10:01  Thiago   1
    1   1        1/1/2009 10:02  Willian   2
    1   0        1/1/2009 10:03  William  2

    Deleçao. Deletar Cliente 2
    ID Status Date                  Nome    Tipo
    1   1        1/1/2009 10:00  Willian    1
    2   1        1/1/2009 10:01  Thiago    1
    1   1        1/1/2009 10:02  Willian    2
    1   0        1/1/2009 10:03  William   2


    Bom.  Minha interface mostra só registros com status 0 (atuais). O status 1 é considerado como arquivo. Uma outra interface me mostra o historico. Assim é possivel descobrir o que o usario alterou. Mas depende de um esforço extra de programaçao e um planejamento extra na base de dados. Eu nao recomendo usar isso em todas as tabelas.

    att





     


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    segunda-feira, 30 de novembro de 2009 14:18
    Moderador

Todas as Respostas

  • Thiago, bom dia!

    De uma procurada sobre Triggers do SQL SERVER é possível fazer isso no proprio banco de dados.
    Henrique Tambalo
    segunda-feira, 30 de novembro de 2009 13:19
  • Eu utilizo o Log4Net. Ele simplifica muito a codificaçao de Trace. 
    É uma biblioteca free e tem a possibilidade se salvar os logs em diferentes formatos, por ex: no log de eventos do windows,em formato txt e em uma base de dados utilizando o appenderadonet

    Veja mais aqui:

    e sobre o appender aqui:
    e aqui:

    Att



    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    segunda-feira, 30 de novembro de 2009 14:02
    Moderador
  • Mas agora, se vc quer rastrear toda e qualquer alteraçao em todas as tabelas do seu sistema, ai é um problema de estrutura da sua base de dados.
    Eu precisei fazer isso para uma tabela apenas e a soluçao foi incluir uma coluna com a data e outra com status.
    Toda vez que o usuario incluia um registro, era feito um insert e a coluna status marcado com 0
    Se o usuario fizesse uma alteracao (update) eu marcava a coluna Status do registro antigo com 1 e incluia outro com as alteraçoes e com o status 0
    Se o usuario deletasse uma registro eu marcava somente o status com o valor 1.

    Se voce for ver, é mais ou menos o que um sistema de controle de versao faz.

    Veja o exemplo da ideia. A tabela abaixo armazena o codigo do cliente, nome e tipo. Date e Status sao meus campos de controle

    Isersao de registro
    ID Status Date                  Nome    Tipo
    1   0        1/1/2009 10:00  Willian    1

    Isersao de outro registro
    ID Status Date                  Nome    Tipo
    1   0        1/1/2009 10:00  Willian    1
    2   0        1/1/2009 10:01  Thiago    1

    Alteraçao (update) de um registro. (vou mudar o tipo do cliente 1 para 2)
    ID Status Date                  Nome    Tipo
    1   1        1/1/2009 10:00  Willian   1
    2   0        1/1/2009 10:01  Thiago   1
    1   0        1/1/2009 10:02  Willian   2

    Alteraçao (update) de um registro. (vou corrigir o nome do Cliente 1 )
    ID Status Date                  Nome    Tipo
    1   1        1/1/2009 10:00  Willian   1
    2   0        1/1/2009 10:01  Thiago   1
    1   1        1/1/2009 10:02  Willian   2
    1   0        1/1/2009 10:03  William  2

    Deleçao. Deletar Cliente 2
    ID Status Date                  Nome    Tipo
    1   1        1/1/2009 10:00  Willian    1
    2   1        1/1/2009 10:01  Thiago    1
    1   1        1/1/2009 10:02  Willian    2
    1   0        1/1/2009 10:03  William   2


    Bom.  Minha interface mostra só registros com status 0 (atuais). O status 1 é considerado como arquivo. Uma outra interface me mostra o historico. Assim é possivel descobrir o que o usario alterou. Mas depende de um esforço extra de programaçao e um planejamento extra na base de dados. Eu nao recomendo usar isso em todas as tabelas.

    att





     


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    segunda-feira, 30 de novembro de 2009 14:18
    Moderador