WP_DEBUG_LOGのログファイルの場所を変更することはできますか?


18

開発環境でWP_DEBUG_LOGを使用していますが、wp-contentディレクトリにあるdebug.logに問題はありません。

実稼働環境でWP_DEBUGをオンにして、何かをデバッグする必要がある場合があります。それでもログを使用したいのですが、Webルート以外の場所にリダイレクトしたいです。これはWP_DEBUG_LOGを使用して可能ですか?

回答:


18

WP_DEBUG_LOGが行うことはすべて次のとおりです。

ini_set( 'log_errors', 1 );
ini_set( 'error_log', WP_CONTENT_DIR . '/debug.log' );

そのため、プラグインまたはテーマでWP_DEBUG_LOGのログの場所を変更する場合は、Webawareの答えが最適です。単に変更したい場合は、上記の2行にwp-config.php置き換えdefine( 'WP_DEBUG_LOG', true );て、ログファイルを任意の場所に変更できます。


数年後、それがワードプレスのコンテンツフォルダにない限り、ファイルにエラーを取り込むことができないようです。
マイクコルメンディ


4

はい、プラグインまたはテーマのfunctions.phpにコードを追加する場合:

if (defined('WP_DEBUG_LOG') && WP_DEBUG_LOG) {
    ini_set( 'error_log', WP_CONTENT_DIR . '/debug.txt' );
}

編集:他の誰かがこれを行う必要があることを教えてくれたので、編集可能なシンプルなプラグインにコードを落としました。必要に応じて要点として利用できます。


これをwp-config.phpファイルに追加しようとしましたが、機能しません。wp-config.phpは、ログファイルの定義にWP_DEBUG_LOGが使用されるコードの実際の場所よりも先にロードされる可能性があるためですか?
ジートン

1
muプラグインに追加することで、これを機能させることができました。とにかく、wp-config内でこの変更を行うだけですか?WP_DEBUG_LOGをfalseに設定し、自分で行うことを置き換える必要があると仮定していますか?
ジートン

1
プラグインまたはテーマにコードを配置できる場合、これはうまく機能します、ありがとう!
ジートン

はい、単純なプラグインにダンプしてください。codexでのプラグインの作成を参照してください。
Webaware

1

この質問に対する最後の回答が投稿されてから、WordPressコードが変更されたようです。これらの定数に関連する現在のwp_debug_mode()関数には、WP_DEBUG_LOGがtrueまたは1に等しいかどうかのテストが含まれます。この場合、他の人が説明したように動作します。

ただし、その定数を文字列(優先ファイルパス)に設定することもでき、ログはそこに出力されます。たとえば、パブリックにアクセス可能なWebコンテンツのディレクトリ外のパスに設定できます。それを機能させるには、ファイルのアクセス許可を試す必要があります。

WordFenceセキュリティプラグインが/ wp-content /でデバッグログにアクセスする可能性があると文句を言っているので、この答えを探しました。

if ( in_array( strtolower( (string) WP_DEBUG_LOG ), array( 'true', '1' ), true ) ) { $log_path = WP_CONTENT_DIR . '/debug.log'; } elseif ( is_string( WP_DEBUG_LOG ) ) { $log_path = WP_DEBUG_LOG; } else { $log_path = false; }


0

Afaik、デフォルトのデバッグファイルの場所を変更することはできません。変更できるのは、MUエラーログの場所とPHPエラーログファイルの場所です。

$ds = DIRECTORY_SEPARATOR;
# DEBUG
define( 'WP_DEBUG',               true );
// file: ~/WP_CONTENT_DIR/debug.log
define( 'WP_DEBUG_LOG',           true );
define( 'WP_DEBUG_DISPLAY',       true );
define( 'SAVEQUERIES',            true );
# DEBUG: MU
define( 'DIEONDBERROR',           true );
define( 'ERRORLOGFILE',           WP_CONTENT_DIR.$ds.'logs'.$ds.'mu_error.log' );

@ini_set( 'log_errors',           'On' );
# PHP Error log location
@ini_set( 'error_log',            WP_CONTENT_DIR.$ds.'logs'.$ds.'php_error.log' );

だから、wp-contentディレクトリにdebug.logファイルが作成されないようにするために、WP_DEBUG_LOGをオフにする必要がありますか?
ジートン

1
あなたはこの日と時間についてかなりの質問をしている:)私は今それらに答える脳の状態ではありません。明日戻ってチャットに飛び込んでください。
カイザー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.