php - 如何访问 Heroku 上的 CakePHP 日志文件?

标签 php cakephp heroku

我已经将 CakePHP 应用程序部署到 Heroku。 CakePHP 默认将其日志写入 APP_ROOT/app/tmp/logs/error.logAPP_ROOT/app/tmp/logs/debug.log 但是因为没有办法获取正在运行的 Heroku web dyno 的 shell,我看不到这些文件的内容。

据我所知,heroku logs 命令返回已转储到 STDERRSTDOUT 的所有内容。如果我是对的,有没有办法强制 CakePHP 将其日志发送到 STDOUT

The Heroku PHP Buildpack作为 dyno 设置的一部分,将 Apache 和 PHP 日志文件作为后台进程进行跟踪。见下文。

cat >>boot.sh <<EOF
for var in \`env|cut -f1 -d=\`; do
  echo "PassEnv \$var" >> /app/apache/conf/httpd.conf;
done
touch /app/apache/logs/error_log
touch /app/apache/logs/access_log
tail -F /app/apache/logs/error_log &
tail -F /app/apache/logs/access_log &
export LD_LIBRARY_PATH=/app/php/ext
export PHP_INI_SCAN_DIR=/app/www
echo "Launching apache"
exec /app/apache/bin/httpd -DNO_DETACH
EOF

在该构建包的分支中,我在适当的位置添加了自己的行,然后将我的应用配置为使用我的自定义构建包。

touch /app/www/tmp/logs/error.log
tail -F /app/www/app/tmp/logs/error.log &

但这没有用。事实上,撇开 CakePHP 的细节不谈,我也没有在 heroku 日志 中看到任何 PHP 或 Apache 日志内容。

最佳答案

我认为以下可能有效。确保您使用的是 CakePHP 2.3.9。

App::uses('ConsoleOutput', 'Console');

CakeLog::config('default', array(
    'engine' => 'ConsoleLog',
    'stream' => new ConsoleOutput('php://stdout')
));

CakeLog::config('stdout', array(
    'engine' => 'ConsoleLog',
    'types' => array('notice', 'info'),
    'stream' => new ConsoleOutput('php://stdout')
));

CakeLog::config('stderr', array(
    'engine' => 'ConsoleLog',
    'types' => array('emergency', 'alert', 'critical', 'error', 'warning', 'debug'),
    'stream' =>  new ConsoleOutput('php://stderr')
));


CakeLog::config('debug', array(
    'engine' => 'ConsoleLog',
    'types' => array('notice', 'info', 'debug'),
    'format' => 'debug %s: %s',
    'stream' => new ConsoleOutput('php://stdout')
));

CakeLog::config('error', array(
    'engine' => 'ConsoleLog',
    'types' => array('warning', 'error', 'critical', 'alert', 'emergency'),
    'format' => 'error %s: %s',
    'stream' =>  new ConsoleOutput('php://stderr')
));

关于php - 如何访问 Heroku 上的 CakePHP 日志文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16717420/

相关文章:

PHP OPcache 优化级别 - 它们是什么?

php - Zend Framework 2 : How to place a redirect into a module, 在应用程序到达 Controller 之前

php - CakePHP 3 - 通过其他表连接?

ruby-on-rails - SELECT DISTINCT 的 PG 错误,尝试在 Heroku 上查看时,ORDER BY 表达式必须出现在选择列表中

php - 优化我的随机行获取

php soap 错误获取 http header

CakePHP 1.3 错误 : Fatal error: Call to a member function cd() on a non-object in/var/www/html/projectname/cake/libs/cache/file. php 在线 248

mysql - 缺少数据库连接 cakephp

python - Heroku 上 django-import-export 的 Tmpfile 错误

ssl - 在 Heroku 上使用自定义域的 Multi-Tenancy 应用程序上使用 SSL