Parece que é impossível usar apenas o Drupal, o que significa:
variable_set()em si não chama nenhum gancho, mas usa db_merge(). Essa função está usando a MergeQueryclasse Agora, seria bom ligar hook_query_alter(), mas ele só funciona para classes de consulta que implementam a QueryAlterableInterfaceinterface. Infelizmente, esta interface é agora implementado apenas pelos SelectQuerye as SelectQueryExtenderaulas, e não pela MergeQueryclasse.
Observe que, mesmo que você encontre uma maneira de criar uma classe filho MergeQuery, isso será implementado QueryAlterableInterfacee fará com que o Drupal a use. hook_query_alter()funciona apenas em consultas que possuem tags e variable_set()não codifica sua consulta; portanto, o gancho não seria usado de qualquer maneira, a menos que você esteja disposto a invadir o núcleo. Mas se você é, não precisa de tudo isso, você pode simplesmente fazer uma chamada de gancho.
Se você se sente incondicional, pode usar uma abordagem PHP mais indireta: $confé uma matriz global de variáveis de configuração; você pode escrever um módulo que o substitua por um objeto que age como uma matriz, conforme descrito em Estouro de pilha . Para torná-lo um bom substituto, você precisa implementar ArrayAccess. Puxe todos os valores do original $confpara o seu objeto. Em seguida, ArrayAccess::offsetSet()implemente sua lógica de log.
$confna época: D Espero que minha resposta atualizada ajude alguém.