войти в stdout / stderr с помощью Laravel 5.6 и php-fpm

Я хочу, чтобы мои приложения Laravel запускались так же хорошо, как и 12-факторные приложения. Прямо сейчас я изо всех сил пытаюсь получить их к журналам и от stdout (stderr тоже нормально) под php-fpm. Версия php 7.2.1, версия laravel 5.6.3.

Я настроил Laravel, чтобы использовать single драйвер для записи на стандартный вывод:

<?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] WARNING: [pool www] child 12 said into stdout: каждые ~ 1000 символов.
Проблема, кажется, известна как выпуск 71880 (префикс) а также выпуск 69031 (усечение). Запрос на тягу видел последнее действие в июне / ноябре прошлого года. У кого-нибудь есть обходной путь, который не разбивает на части и не усекает сообщения журнала (я регистрирую объекты json, и мне нравится, что они завершены)?

Почему PHP-FPM ставит предупреждение перед записью на стандартный вывод? связано с этим, но до сих пор не решена либо.

Это 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);
}
}
}

4

Решение

Это будет исправлено, когда выйдет PHP 7.3 6 декабря 2018 г..
Директива config для пула decorate_workers_output = no как указано в тянуть запрос.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]