在STDOUT中编写WordPress错误而不是debug.log吗?

时间:2019-01-21 09:14:52

标签: php wordpress logging

我的WordPress应用程序正在ECS实例上运行,并且我还为基本的日志记录信息设置了CloudWatch。

当一切运行正常时,这没关系,但是当我遇到错误时,我在日志中看到的只是类似

  

x.x.x.x--[21 / Jan / 2019:08:03:00 + 0000]“ POST /wp-admin/user-new.php HTTP / 1.1” 400 5 ....

创建新用户时发生了什么,但是发生了错误。哪一个,我不知道。

因此,我想输出STDOUT中发生的所有错误,以便可以在常规日志(the twelve factor app - logging)中看到它们。

我也在考虑实现独白,但这似乎会花费太多时间,而且我需要快速解决问题。

通过挖掘WP核心代码,我发现在wp-includes/load.php中我拥有

if ( WP_DEBUG_LOG ) {
  ini_set( 'log_errors', 1 );
  ini_set( 'error_log', WP_CONTENT_DIR . '/debug.log' );
}

因此,error_log默认在debug.log中写入错误和通知。

我可以用类似的东西覆盖吗

ini_set( 'error_log', fwrite( STDOUT, WP_CONTENT_DIR . '/debug.log' ) );

是在我的插件中还是在我的wp-config.php中?还是我需要做些其他事情?通常,我想避免一起创建debug.log文件,而只将错误输出到STDOUT

编辑

好的,所以在我得到

时,将上面的代码放在wp-config.php中是行不通的
  

使用未定义的常量STDOUT

     

使用未定义的常量WP_CONTENT_DIR

  

:fwrite()期望参数1为资源,字符串为

警告...

1 个答案:

答案 0 :(得分:0)

这显然可以解决问题:

# Includes the autoloader for libraries installed with composer
require __DIR__ . '/vendor/autoload.php';

putenv('GOOGLE_APPLICATION_CREDENTIALS=../service-account.json');
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
$client->refreshTokenWithAssertion();
$token = $client->getAccessToken();
$accessToken = $token['access_token'];

感谢Sarah Pantry在Facebook上提供了摘录:)