|
|
| 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
|
| )
|
|
|
|
|