我在开发环境中使用WP_DEBUG_LOG,并且wp-content目录中的debug.log没有问题。

有时我在生产中需要调试某些东西时打开WP_DEBUG,但我仍然想使用日志,但希望将其重定向到我的Web根目录之外的目录。是否可以使用WP_DEBUG_LOG?

#1 楼

事实证明,WP_DEBUG_LOG所做的全部是:

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


因此,如果您想在插件或主题中更改WP_DEBUG_LOG的日志位置,则Webaware的答案是最好的。如果只想在wp-config.php中进行更改,则可以用上述两行替换define( 'WP_DEBUG_LOG', true );,然后将日志文件更改为所需的任何位置。

评论


几年后,除非在wordpress内容文件夹中,否则我似乎无法使该文件充满错误。

–迈克·科门迪(Mike Kormendy)
17年1月29日在5:39

@MikeKormendy-可能是目录权限问题。您希望写入文件的位置必须是php运行程序进程所有者的用户可写。简而言之,请确保新文件目标与当前wp-content文件夹具有相同的权限。

–迈克尔·泰特(Michael Teter)
19/12/23在16:54

#2 楼

自从此更改以来,似乎大多数答案对于WP 5.1及更高版本都不再适用:https://make.wordpress.org/core/2019/01/23/miscellaneous-developer-focused-changes-in-5 -1 /
现在,如果要覆盖默认的WP_DEBUG_LOG,则可以在wp-config.php中将wp-content/debug.log定义为路径,例如:
define( 'WP_DEBUG_LOG', 'wp-content/uploads/debug.log' );


#3 楼

是的,如果您向插件或主题的function.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定义日志文件的代码中的实际位置加载了?

– jjeaton
13年2月2日在22:25

通过将其添加到mu插件中,我能够使它正常工作。无论如何,我只需要在wp-config中进行此更改?我假设我只需要将WP_DEBUG_LOG设置为false并替换自己的内容?

– jjeaton
13年2月2日在22:27

如果您可以将代码放在插件或主题中,则效果很好,谢谢!

– jjeaton
13年2月2日于23:02

是的,只需将其转储到一个简单的插件中即可。请参阅在Codex上编写插件。

– Webaware
13年2月2日于23:04

#4 楼

自从发布此问题的最后答案以来,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; }

#5 楼

时间在变化,所以对技术问题的正确答案也是如此。

截至2019年末的当前答案很简单。在wp-config.php中定义WP_DEBUG_LOG“ constant”时,您现在可以提供要在其中写入文件的路径。

define( 'WP_DEBUG_LOG', '/tmp/wp-errors.log' );

请参阅Wordpress支持文档。

#6 楼

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_DEBUG_LOG才能确保从不在wp-content目录中创建debug.log文件?

– jjeaton
13年2月1日在19:59

您现在在这个时候问很多问题:)我现在不在脑海中回答这些问题。明天回来聊天吧。

– kaiser
13年2月1日在20:47