web-development-kb-pt.site

Como faço para registrar as ações do plugin (cron)?

Existe uma maneira recomendada de registrar ações do cron (com falha) no seu plugin? Por exemplo, eu tenho um plugin que sincroniza com um serviço externo a cada hora. Eu quero registrar quanto foi alterado, mas também quando a sincronização falhou. O que você recomendaria aqui? Uma nova tabela de banco de dados? Os Log Deprecated Notices plugin faz isso com um tipo de post personalizado, mas isso pode ser muito sobrecarga? Eu acredito WordPress não vem com um pacote de log padrão ?

6
Jan Fabry
  1. Use um arquivopara gravar os eventos em. Existem vários inconvenientes aqui;

    • Permissões do sistema de arquivos . Ao implantar seu aplicativo, você terá que se lembrar de conceder ao servidor da Web permissão para gravar no arquivo. E para ter mais certeza, você teria que escrever um código que verifica se você pode escrever no arquivo e emitir um aviso quando não puder. Isso adiciona complexidade e é provavelmente uma causa de problemas de implantação.
    • Exclusão acidental . Você pode excluir acidentalmente o arquivo de log personalizado e perder seus registros. Isso pode ser inconveniente.
    • Custom logformat . Você teria que criar um formato de texto personalizado (legível por máquina?) Para gravar os eventos em seu arquivo. Quando você precisa alterar o formato de log, não há maneira conveniente de migrar registros antigos. Quando você quiser fazer algum tipo de análise nos logs, você terá que analisar os registros. Isso leva a mais código e mais complexidade. Complexidade é ruim.
  2. Use uma tabela de banco de dados. Crie sua própria tabela de banco de dados e registre os eventos lá. Nenhum dos inconvenientes listados acima se aplica. Isso não adiciona muita complexidade. Automatize a criação e exclusão da tabela usando um gancho de plugin e você tem um sistema de log razoavelmente confiável, eu acho.

  3. Enviar um e-mail. Dependendo da relevância dos registros, você pode sempre optar por esse método. Eu imagino que você provavelmente deseje enviar um e-mail em caso de falha de qualquer maneira.

  4. Use o logger do sistema operacional. Quando você usa a função syslog no PHP, você pode gravar eventos no logger do sistema (syslog no Unix, Log de Eventos no Windows NT). Configurar um syslog definido pelo usuário complica a implantação.

Finalmente; você deve considerar se deseja registrar o caso normal e exceções ou apenas exceções. Jeff Atwood fez um bom writeup sobre isso.

Espero que isto ajude!

6
Wietse Venema

Use uma função de registro como this , para que ele grave seu logout no debug.log configurando seu wp-config.php com o seguinte que eu encontrei aqui :

/**
 * This will log all errors notices and warnings to a file called debug.log in
 * wp-content (if Apache does not have write permission, you may need to create
 * the file first and set the appropriate permissions (i.e. use 666) ) 
 */
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors',0);

Isso deve funcionar para fins de depuração/desenvolvimento, pelo menos (não tenho certeza de como seria bom para o log de produção, mas funciona para o desenvolvimento).

6
leeand00

Eu concordo, colocar esses dados em wp_posts poderia fazer a tabela crescer rapidamente para um tamanho incontrolável. Tudo bem criar uma tabela. Eu iria a milha extra e daria a alguém uma maneira de limpar a tabela de log caso eles parassem de usar seu plugin.

Eu não tenho medo de plugins que criam tabelas, mas talvez seja porque eu já vi bancos de dados do WordPress com 8.000.000 de registros wp_term_relationships e 300.000 posts e sei o quanto essa experiência pode ser desagradável.

dbDelta() e register_activation_hook() serão seus amigos aqui. Veja Criando Tabelas com Plugins .

2
Annika Backstrom