Я запускаю Apache2 в Docker-контейнере и хочу ничего не записывать на диск, записывать логи в stdout и stderr. Я видел несколько разных способов сделать это ( Supervisord и stdout / stderr , журнал доступа Apache к stdout ), но это похоже на хаки. Нет ли способа сделать это по умолчанию?
Чтобы быть ясным, я не хочу, чтобы хвост журнала, так как это приведет к тому, что вещи будут записаны на диск в контейнере.
apache-2.2
docker
aronchick
источник
источник
Ответы:
работает на Ubuntu и Centos для меня
источник
domain.conf
файле или.htaccess
если вы не используетеconf
.Как насчет размещения этого в вашем Dockerfile после установки пакета apache2?
Предполагая, что это путь к журналам. Это для Ubuntu 14.04, а также работает для Ubuntu 16.04.
Примечание: если вы уверены, что символические ссылки есть
/dev/stdout
или/proc/stderr
есть, то вы также можете использовать их. Я предпочитаю путь к реальному файлу, поскольку он гарантированно присутствует.источник
Не конкретно ответ на вопрос, но, возможно, лучшим способом, в зависимости от вашего сценария, было бы вообще не входить в stdout / stderr. Просто передайте логи cat в формате JSON. Это избавило бы от необходимости различать потоки, поскольку у json могли быть данные, необходимые для их различения. например, что-то вроде следующего. Это может тогда быть намного легче поглощено чем-то вроде graylog
Существует также модуль регистрации GELF, так что вы можете транслировать напрямую с Apache на сервер типа Graylog, если вы хотите
источник