WordPress: プラグイン開発でログを出す方法

まあプラグイン開発じゃなくてもいいんだけど。
プラグインを開発していると、テーブルを新たに作成して、投稿したタイミングでそのテーブルにデータを保存ということもあるかと思うんですが、フックであるsave_postのタイミングのデータをvar_dumpとかで出力できないんじゃないかと思って(そういえば試してないな…)、ログファイルに出力する方法を探していた。

functions.phpに、

  • debug_fopen($log_file, $mode);
  • debug_fwrite($fp, $message);
  • debug_fclose($fp);

という関数があったので、これを使うこととした。

ただし、これらの関数はWordPressのデバッグモードでしか動かないらしい。デバッグモードにするには、$GLOBALS[‘debug’]を1に設定しなければならないらしいのだが、どこで設定すればいいのか見つけられなかったので、wp-config.phpの最後に以下を追加した。

// wp-config.phpに追加
$GLOBALS['debug'] = 1;

その後、プラグインのクラスにデバッグログを保存するためのメソッドを追加。各プラグインディレクトリ内のlogディレクトリ内にdebug.logというファイルを作成して追記していく仕様にした。

// プラグインファイルで処理担当のクラスを実装
class hoge{
	/**
	 * プラグインのログディレクトリにデバッグログを保存する
	 * @param $message ログファイルに出力するメッセージ
	 * @return void
	 **/
	function debug_log($message){
		$message = date('Y-m-d H:i:s') . ' ' . $message . "\n";
		$log_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'log' . DIRECTORY_SEPARATOR . 'debug.log';
		$fp = debug_fopen($log_file, 'a+');
		debug_fwrite($fp, $message);
		debug_fclose($fp);
	}
}

ひょっとしたらもっとスマートな方法があるのかもしれないけど、ログを残す方法としては、いいのではないかと。プラグイン用の基底クラスが欲しくなるな〜、とかいって。


カテゴリー PHP, WordPress | タグ | パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です