tag:crieit.net,2005:https://crieit.net/tags/error_log/feed
「error_log」の記事 - Crieit
Crieitでタグ「error_log」に投稿された最近の記事
2021-11-18T00:03:13+09:00
https://crieit.net/tags/error_log/feed
tag:crieit.net,2005:PublicArticle/17769
2021-11-18T00:03:13+09:00
2021-11-18T00:03:13+09:00
https://crieit.net/posts/output-var-dump-as-log-in-wordpress-20211118
WordPress で処理の結果をログに出力したい
<p>WordPress のアクションフックで処理している内容を覗き見たいと考えました。</p>
<p>ただし、記事を公開した際の <code>publish_post</code> で処理される内容を見たい……というようなケースでは、画面出力するとブロックエディタの画面に出力されることになり、表示が大幅に崩れたりして悪影響が出ることが想定されます。</p>
<p>そこで、ログファイルにこっそり吐き出す方法を採ることにしました。</p>
<h2 id="コード"><a href="#%E3%82%B3%E3%83%BC%E3%83%89">コード</a></h2>
<pre><code class="php"><?php
ob_start();
var_dump($post);
var_dump($term);
$result = ob_get_clean();
$log_message = sprintf("%s:%s\n", date_i18n('Y-m-d H:i:s'), htmlspecialchars($result, ENT_QUOTES, 'UTF-8'));
error_log($log_message, 3, __DIR__ . '/debug_log.txt');
</code></pre>
<p>サンプルですが、上述のようなイメージ。 <code>var_dump()</code> を文字列として出力するためのバッファリングを使用しつつ、その文字列に日付等を付与してログの出力のような体裁を整えることにしました。</p>
<p>そしてその内容をPHP標準の <code>error_log()</code>関数 でファイルに出力します。</p>
<p>なお、このコードを使用するに当たり WordPress の <code>wp-config.php</code> で次のようにデバッグモードとデバッグのログ出力を有効にしておきます。</p>
<pre><code class="php">//define('WP_DEBUG', false);
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
</code></pre>
<p>これでファイルに変数の中身が出力されるので確認できます。</p>
<h2 id="参考"><a href="#%E5%8F%82%E8%80%83">参考</a></h2>
<ul>
<li><a target="_blank" rel="nofollow noopener" href="https://futureys.tokyo/how-to-log-and-its-mechanism-in-wordpress/">WordPress のログ出力方法と仕組み | ultra code</a></li>
<li><a target="_blank" rel="nofollow noopener" href="https://www.sofplant.com/blog/tech/wordpress-log-output/">WordPressの本番運用中にログ出力をする方法 | ソフプラント</a></li>
<li><a target="_blank" rel="nofollow noopener" href="https://tm.root-n.com/programming:php:etc:error_log">PHP :: error_log() 関数を利用したロギング [Tipsというかメモ]</a></li>
</ul>
arm-band