プラグイン

ログ出力を操作するプラグインWP Output Log Fileを公開

2017.02.24


2017.03.02更新

ログファイル出力を簡単に操作するプラグインWP Output Log Fileを公開しました。

オープンソース(GPLv2)なのでどなたでも自由に無料でご利用できます。下記公式ディレクトリやGitHubから入手できます。

開発や運用時に記録しておきたいデータをlogテキストファイルで出力、管理画面からコントロールできるようにします。

サイトの運用中にデータベースに保存するほどではないけれど、気軽にテキストやエクセルで見たいという方にお勧めです。

インストール(公式ディレクトリから)

管理画面の「プラグイン」から「新規追加」をクリックします。

検索窓から「log file」や「output log」と入力してください。

「今すぐインストール」ボタンをクリックします。

インストール(GitHubから)

GitHubにアクセスし、git cloneするか、右の緑のボタン [Clone or download]からDownload Zipをクリックしzipファイルをダウンロードします。

ご利用中のWordPressのプラグインフォルダにwp-output-log-fileフォルダを展開します。

使い方

管理画面のメニュー「プラグイン」から、WP Output Log Fileを有効化します。

管理メニューの「設定」> 「WP Output Log File」 をクリックし、設定画面を開きます。

Output Activeの項目にチェックし、「変更を保存」をクリック、ログ出力をアクティブします。

File Directoryで指定した箇所が書き込みOKなら OK: [フルパス] が表示されます。書き込み不可でしたら NGが表示されますので、指定箇所を書き込み可にするか、パスを変更してください。

書き込みディレクトリに問題がなければ、次は実際にログを出力する箇所を設定します。

例えば、サイトを訪れた人のIPを記録する例ですが、お使いのテーマファイルのfooter.phpに以下を書きます。

<?php
if ( function_exists( 'wo_log' ) ) { 
	wo_log( $_SERVER[ "REMOTE_ADDR" ] );
}
?>

これで設定は完了です。サイトにアクセスみましょう。

うまくログが取れ始めると、「Manage」で管理する事ができます。

このように、出力しているログの一覧が表示され、ダウンロード、削除ができます。

Output Active 出力のOn/Off スイッチです。ログ出力を好きな時にできるように。
File Directory 指定したディレクトリにログを出力します。 wp-content 以下からの指定ですが、相対パスで ../等も使えるので、wordpressシステムより上の階層を指定して、外部から完全に見えないようにもできます。
※ 初期設定で推測されにくいようランダムな文字を入れています。
パスが指定できると、wp-admin等も指定可能になるため、そういった指定は書き込み不可になるようにしています。
File Name ファイル名を好きな名前に付けられます。ファイル名に日付フォーマットが入れられますので、日や月毎に分割したい時に便利です。
こちらもセキュリティを考慮して .log, .txt, .csvの拡張子以外は利用できないようにしています。
 万が一プログラムのファイルを上書きしたり、消したりしないようにという理由です。
Time Record Format

logの出力内容の行頭の現在の時刻を入れる場合にそのフォーマットを入れます。
php の dateフォーマットを利用します。

Access Protect 出力したログファイルに外部からurlでアクセスできないよう、フォルダ内.htaccess(apacheのみ有効)とindex.phpを設置します。
Manage – download 出力したログファイルをダウンロードします。
管理者以外はダウンロードできないよう工夫しています。
Manage – Delete 出力したログファイルを削除します。
 元々ある重要なファイルは削除しないように .log, .txt, .csvのみ表示しています。

誰がどこからログインしたかを記録

最初の使い方の応用として、ログイン時のフックを利用し、ユーザーがWordPressにログインした時のログイン名とIPを記録してみます。

add_action( 'wp_login', 'my_login_record', 10, 2 );

function my_login_record ( $user_login, $user ) {
   wo_log( $user_login . ':' . $_SERVER["REMOTE_ADDR"] );
}

お問合せの入力内容をcsvでダウンロード

お問合せした人の入力情報をエクセルで見たいなぁという要望は多いかと思います。

一番利用者が多いであろう定番のContactForm 7でcsvファイルに記録できるようしてみます。

このプラグインでは送信データに対してのフィルタフックが用意されていますので、たとえばインストール後のデフォルトの項目を例にすると、下記のように書く事ができます。

add_filter('wpcf7_posted_data', 'cf7_csv_log');

function cf7_csv_log ($args) {
	wo_log(sprintf('"%s","%s","%s","%s"',
				   $args['your-name'],
				   $args['your-email'],
				   $args['your-subject'],
				   $args['your-message']));
   return $args;
}

また、設定画面で、時刻の部分をcsvで読めるようにカンマで区切る等、少し工夫します。

結果は以下のようになります。

ログ出力というとエンジニア以外は関係がないイメージがあると思いますが、工夫次第でいろいろな情報を記録できるようになります。
特にWordPressはadd_action, add_filterという本体のプログラムに手をいれなくてもカスタイマイズできる関数が用意されているので、記録を取るのが容易になっています。

実は昨年公開した「WordPressの本番運用中にログ出力をする方法」のブログ記事が思いのほか検索されるので、プラグインに存在しないのかなと思って調べてみました。いくつか使ってみたのですが、想定していたものと違っていたので、作ってみようと思ったのがきっかけです。

最初は簡単に ON/OFF 機能があればいいかなと考えていたのですが、作っているうちにファイル名や出力ディレクトリを指定したくなり、管理画面からのダウンロード、ログファイルを消したりできた方がいいなと考えるようになりまして、作るのに時間がかかってしまいました。便利に思っていただければ幸いです。