使用Laravel 5.6和php-fpm登录到stdout / stderr
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用Laravel 5.6和php-fpm登录到stdout / stderr,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1351字,纯文字阅读大概需要2分钟。
内容图文
我希望我的laravel应用程序能够运行有效的12因素应用程序.现在我在php-fpm下努力让他们在stdout(stderr对我来说也很好)得到他们的日志. php版本是7.2.1,laravel版本是5.6.3.
我配置laravel使用单个驱动程序写入stdout:
<?php
return [
'default' => env('LOG_CHANNEL', 'stack'),
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['single'],
],
'single' => [
'driver' => 'single',
'path' => 'php://stdout',
'tap' => [App\Logging\UseJsonFormatter::class],
'level' => 'debug',
],
];
这适用于测试服务器,但fpm前缀有日期和警告:[19-Feb-2018 09:43:41]警告:[pool www] child 12表示stdout:每个~1000个字符.
这个问题似乎被称为issue 71880 (prefix)和issue 69031 (truncation).一个Pull Request去年6月/ 11月的最后一次行动.有没有人有一个没有块或截断日志消息的解决方法(我正在记录json对象,我喜欢它们完成)?
Why PHP-FPM prefixes a warning when writing to stdout?与此有关,但仍未解决.
如果有人有兴趣,这是UseJsonFormatter.php:
<?php
namespace App\Logging;
use Monolog\Formatter\JsonFormatter;
class UseJsonFormatter
{
/**
* Customize the given Monolog instance.
*
* @param \Monolog\Logger $monolog
* @return void
*/
public function __invoke($monolog)
{
$jsonFormatter = new JsonFormatter();
foreach ($monolog->getHandlers() as $handler) {
$handler->setFormatter($jsonFormatter);
}
}
}
解决方法:
这将在December 6th 2018发布PHP 7.3时修复.
该池的config指令是decorate_workers_output = no,如pull request中所述.
内容总结
以上是互联网集市为您收集整理的使用Laravel 5.6和php-fpm登录到stdout / stderr全部内容,希望文章能够帮你解决使用Laravel 5.6和php-fpm登录到stdout / stderr所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。