| |
|
| | from datetime import datetime
|
| | import logging
|
| | from banco import SessionLocal
|
| | from models import LogAcesso
|
| |
|
| |
|
| | logger = logging.getLogger(__name__)
|
| |
|
| | def registrar_log(usuario, acao, tabela, registro_id=None):
|
| | """
|
| | Registra um log de acesso/ação na tabela LogAcesso.
|
| | Mantém assinatura e padrão original, mas com tratamento de exceções e normalização.
|
| |
|
| | :param usuario: str | usuário responsável pela ação (fallback para 'sistema' se None/vazio)
|
| | :param acao: str | ação realizada (ex.: 'CRIAR', 'DESATIVAR', 'EXCLUIR')
|
| | :param tabela: str | nome da tabela/entidade relacionada (ex.: 'eventos_calendario')
|
| | :param registro_id: int | id do registro afetado (opcional)
|
| | """
|
| |
|
| | usuario = (usuario or "sistema")
|
| | acao = (acao or "").strip() or "DESCONHECIDA"
|
| | tabela = (tabela or "").strip() or "desconhecida"
|
| |
|
| | db = SessionLocal()
|
| | try:
|
| | log = LogAcesso(
|
| | usuario=usuario,
|
| | acao=acao,
|
| | tabela=tabela,
|
| | registro_id=registro_id,
|
| | data_hora=datetime.now()
|
| | )
|
| | db.add(log)
|
| | db.commit()
|
| | except Exception as e:
|
| |
|
| | try:
|
| | db.rollback()
|
| | except Exception:
|
| |
|
| | pass
|
| | logger.exception(
|
| | "Falha ao registrar log: usuario=%r, acao=%r, tabela=%r, registro_id=%r. Erro: %s",
|
| | usuario, acao, tabela, registro_id, e
|
| | )
|
| |
|
| | finally:
|
| | db.close()
|
| |
|
| |
|
| |
|
| |
|
| | def registrar_log_safe(usuario, acao, tabela, registro_id=None):
|
| | try:
|
| | registrar_log(usuario, acao, tabela, registro_id)
|
| | except Exception:
|
| |
|
| | logger.exception(
|
| | "registrar_log_safe: erro inesperado ao registrar log (usuario=%r, acao=%r, tabela=%r, registro_id=%r)",
|
| | usuario, acao, tabela, registro_id
|
| | )
|
| |
|
| |
|