ワードプレスでデバッグログをダッシュボードに表示させる方法

ワードプレスでデバッグログをダッシュボードに表示させる方法

  • 2017-01-28  最終更新日:2017-01-28

ワードプレス運用中のサイトのエラーログを出力させてそれをダッシュボードで見る方法をご紹介します。

ログ出力方法は結構いろいろなサイトに書かれているのですがそれをダッシュボードに表示させる方法がなかったので作ってみました。WP_DEBUGを使ってデバッグモードをtrueにすれば表示させられるのですが、運用中のサイトにログが出力されてもいけないのでログファイルに保存するようにします。

まずはログファイルに出力させる方法は簡単です。


スポンサーリンク


ログファイル出力設定

3ステップで完了できます。

1.wp-config.php設定

まずwp-config.phpに下記設定します。 WP_DEBUGがfalseになっているのをtrueに変更して、WP_DEBUG_LOGをtrueにします、これでログがとれます。それからWP_DEBUG_DISPLAYをfalseにします、これで画面出力を非表示にします。 一応php側の設定でもdisplay_errorsも0にしてエラー出力を非表示にします。

wp-config.php

<?php;
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors',0);

この設定だけでhttp://example.com/wp-content/debug.logなどのように、debug.logが出来ます。

ただこのままだとあからさまに見られてしまうので.htaccessに下記を追記します。

# BEGIN WordPressから# END WordPressまではワードプレスインストール時に出来ていると思いますのでその下のFiles debug.logから記述します。 これでアクセスできないようにして見られなくします。

2.htaccess設定

.htaccess

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

<Files debug.log>
Order allow,deny
Deny from all
</Files>

これで外部アクセスから表示されません。

3.functions.php設定

最後にfunctions.phpに下記を記述します。これで完了です。

functions.php

<?php
// エラーログ取得
function getWpErrorLog() {
	// ファイルパス
	$logfile = WP_CONTENT_DIR.'/debug.log';
	// 最大ログ件数
	$maxlist = 10;
	// ログファイルかあるかどうか
	if ( file_exists( $logfile ) ) {
		$log = file($logfile);
		$reversed = array_reverse($log);
		echo '<ul class="wperrors">';
		$i = 0;
		foreach ($reversed as $reverse) {
			if ($i < $maxlist) {
				echo '<li>'.$reverse.'</li>';
			}
			$i++;
		}
		echo '</ul>';
	} else {
		echo '<p>ログを取得できません。</p>';
	}
}
// ダッシュボード表示
function WPErrorLogDashbordDisplay() {
	if (current_user_can('administrator')) {
		wp_add_dashboard_widget( 'wp-geterrors', 'デバッグエラーログ', 'getWpErrorLog' );
	}
}
add_action( 'wp_dashboard_setup', 'WPErrorLogDashbordDisplay' );

管理者権限のみと10件表示になっています。因みに時間がUTC時刻なので9時間ぐらいの差があります。日本時間にしたい場合は同じくfunctions.phpの先頭に下記を記述すると良いです。

<?php
date_default_timezone_set( 'Asia/Tokyo' );

参考になれば幸いです。


∞Tadashi Suyama∞

wordpress web functions
  • このエントリーをはてなブックマークに追加
  • follow us in feedly

サイト内検索

最近の投稿

アイキャッチ
アイキャッチ画像がない場合に記事内はじめの画像をアイキャッチにする方法とリンク先画像取得-WordPress

今回はワードプレスのアイキャッチです。記事内はじめの画像を取ってくる方法は結構出回っているので、リンク先の画像を撮ってくる方法をプラスしたやり方になります。 記事内はじめの画像を取得する方法は...

10 Nov 2018

アイキャッチ
豊富で魅力的な画像素材サイトPxBee

画像素材サイトのご紹介です。Pxbeeというfotor提供のサイトです。1枚から購入ができて金額もお手頃です。普段はアドビのアドビストックを利用していますが検索したときの画像の量が多い気がします...

06 Nov 2018

アイキャッチ
Caffeineの代替えにAmphetamine

強制的にスリープさせないようにするアプリAmphetamine【アンフェタミン】なんですが、名前の由来はアメリカでは注意欠陥・多動性障害の薬として使われており、日本では覚醒剤に指定されているよう...

25 Oct 2018

アイキャッチ
macOS Mojaveを早速インストールしてみた感想

さて、いつもなら安定してきたぐらいにアップデートを行うのですが今回は時間もあったのでmacOS Mojaveにアップデートをしてみました。 入れてみてすぐに感じた感想は重い。。。もっさり感が半...

24 Oct 2018

アイキャッチ
ムーバブルタイム(MT)からワードプレスのインポート

今回はムーバブルタイプからワードプレスのインポートについてです。デフォルトで使っている場合の記事は多くありますのでそちらをご参考になさってください。今回はアーカイブテンプレートでアーカイブパスを...

23 Oct 2018

著者

ウェブエンジニアのSUYAMAのブログです。

WEBに関することや個人的に関心のあることについて書きます。主に技術系ブログです。

タグクラウド

wordpress web functions
フッターイメージ