微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Heroku上访问CakePHP日志文件?

我已经向Heroku部署了CakePHP应用程序. CakePHP认将其日志写入APP_ROOT / app / tmp / logs / error.log和APP_ROOT / app / tmp / logs / debug.log,但由于没有办法将shell运行到正在运行的Heroku web dyno,我不能看到那些文件内容.

据我了解,heroku logs命令返回已转储到STDERR和STDOUT的所有内容.如果我是对的,有没有办法强制CakePHP将其日志发送到STDOUT?

作为dyno设置的一部分,The Heroku PHP Buildpack将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')
));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐