Tem alguma forma no SC5 de pegar o valor q estava antes no campo para montar o log com o valor anterior e o atual, igual tem quando se faz direto no banco de dados, aonde temos OLD e NEW?
Primeiramente você dá um select no banco e verifica qual valor está gravado lá para este campo com a chave atual e insere o valor na tabela de LOG com este valor.
Em seguida você insere no LOG o valor que está no campo, que será o valor que vai substituir o anterior.
Aí você poderia perguntar: Mas e se ocorrer algum erro já que o o código estará no "onBeforeInsert"?
Já testei no meu sistema e em nenhum momento ele inseriu no log caso acontecesse algum erro de execução.
Para isso, eu particularmente uso TRIGGERS direto no banco (passando valores OLD e NEW) para uma nova tabela de LOG.