Не думаю, что это проблема с Apache Web Server или mod_se c. Cloud Foun dry будет читать журналы из приложений, запущенных на нем, журналы, которые записываются в STDOUT / STDERR. Именно так вы должны вести журнал, если у вас есть приложение, работающее на Cloud Foun dry, и если вы развертываете приложение PHP на Cloud Foun dry, так как PHP buildpack будет настраивать PHP и Apache веб-сервер для размещения вашего PHP приложения.
Вы не можете просто войти в файл, потому что файловая система для вашего приложения, работающего в Cloud Foun dry, эфемерна. Он будет работать в счастливые времена, но когда что-то не получается и ваше приложение падает, оно не будет работать. Файловая система, включая записанные вами журналы, исчезнет, когда приложение выйдет из строя, и это очень затруднит устранение неполадок.
Что касается поведения, которое вы видите, Cloud Foun dry Система регистрации имеет ограничения по размеру для одной записи журнала. Если вы попытаетесь написать однострочную запись в журнале, выходящую за пределы, система журналов автоматически разделит строку, и вы получите две строки журнала. Я подозреваю, что это то, что здесь происходит.
Я немного посмотрел, но не смог найти документированного максимального значения для длины строки, прежде чем она будет разделена. Лучшее, что я смог найти, было это обсуждение настройки, которое дает некоторую историю об этом . Похоже, он не дает четкого объяснения того, как все устроено.
Поскольку я не мог найти официально задокументированное значение, я хотел проверить и проверить длину. Для этого я развернул тестовое приложение в Pivotal Web Services (работает с последней версией OSS Cloud Foun dry) и написал несколько длинных строк журнала (если вы хотите увидеть тестовый код, просто дайте мне знать). Максимум, который я смог получить до разбиения строки, составил 61441 байт (я повторил символ a
в моем тесте, если у вас есть многобайтовые символы, такие как 丂
, он разделится раньше). Это соответствовало более старому поведению, упомянутому в обсуждении выше. Возможно, ваш пробег будет отличаться в зависимости от используемой версии CF и конфигурации вашей платформы.
Независимо от точного значения лимита, всегда будет некоторый лимит. Вы можете либо попытаться воссоздать свои записи в журнале, т. Е. Соединить их, после факта, или вы можете сохранить информацию где-нибудь еще. Используйте службу, например базу данных, или отправьте записи журнала непосредственно в syslog.
Syslog - хороший вариант, но встроенная поддержка HTTPD для этого требует, чтобы syslogd работал локально , что не внутри контейнера Cloud Foun dry. Вероятно, проще использовать функцию регистрации по трубопроводам и использовать внешнюю программу для отправки выходов из системы. Вот пример этого .