web-dev-qa-db-ja.com

プラグイン(cron)の動作を記録するにはどうすればいいですか?

プラグインから(失敗した)cronアクションを記録するための推奨方法はありますか?たとえば、1時間ごとに外部サービスと同期するプラグインがあります。変更された量だけでなく、同期が失敗したときも記録します。ここで何をお勧めですか?新しいデータベーステーブル? Log Deprecated Notices pluginはこれをカスタム投稿タイプで行いますが、これはオーバーヘッドが大きすぎるのでしょうか。 WordPressには標準のログ記録パッケージは付属していません

6
Jan Fabry
  1. ファイルにを使用してイベントを書き込みます。ここにいくつかの欠点があります。

    • ファイルシステムのパーミッション 。アプリをデプロイするときは、ファイルへの書き込み権限をWebサーバーに付与することを忘れないように注意する必要があります。そしてさらに確実にするためには、ファイルに書き込めるかどうかをチェックし、できない場合は警告を出すコードを書く必要があります。これにより複雑さが増し、デプロイメントの問題の原因となる可能性があります。
    • 誤って削除した場合 。誤ってカスタムログファイルを削除してレコードを失う可能性があります。これは不便かもしれません。
    • カスタムログフォーマット 。あなたはあなたのファイルにイベントを書くためにカスタム(機械可読?)テキストフォーマットを考え出さなければならないでしょう。ログフォーマットを変更しなければならないとき、古いレコードを移行する便利な方法はありません。ログに対して何らかの分析を行いたい場合は、レコードを解析する必要があります。これはより多くのコードとより多くの複雑さにつながります。複雑さは悪いです。
  2. データベーステーブルを使用します。独自のデータベーステーブルを作成し、そこでイベントをログに記録します。上記の欠点のいずれも当てはまりません。それほど複雑にはなりません。プラグインフックを使用してテーブルの作成と削除を自動化すれば、かなり信頼できるログシステムができると思います。

  3. 電子メールを送信する。ログの関連性に応じて、常にこの方法を選ぶことができます。とにかく失敗した場合に備えて、おそらくEメールを送りたいと思うでしょう。

  4. OSロガーを使用してください。 PHPで syslog 関数を使用すると、システムロガーにイベントを書き込むことができます(UNIXの場合はsyslog、Windows NTの場合はEvent Log)。ユーザ定義のsyslogを設定すると、配置が複雑になります。

最後に;通常のケースであるを記録するか、例外のみを記録するかを検討する必要があります。 Jeff Atwoodはこれについて良い writeup をしました。

お役に立てれば!

6
Wietse Venema

this のようなロギング機能を使用して、wp-config.phpを以下のように設定することでdebug.logにログを書き出します。 here

/**
 * 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);

これは少なくともデバッグや開発の目的ではうまくいくはずです(本番用のロギングがどれほど素晴らしいかはわかりませんが、開発ではうまくいきます)。

6
leeand00

私は、このデータをwp_postsに入れるとテーブルが管理不能なサイズに急速に成長する可能性があることに同意します。テーブルを作成しても大丈夫です。私はもう一歩先を行き、プラグインの使用をやめた場合にログテーブルをクリーンアップする方法を誰かに与えるでしょう。

私はテーブルを作成するプラグインを恐れていませんが、おそらく8000,000のwp_term_relationshipsレコードと300,000の投稿を持つWordPressデータベースを見たことがあるので、その経験がどれほど不快なものになるか知っています。

dbDelta()register_activation_hook() はここにあなたの友達になります。 プラグインを使ったテーブルの作成 を参照。

2