Я работаю над проектом, в котором у меня есть приложение iOs, подключающееся к PHP API. Я хочу регистрировать все входящие запросы к сервису веб-сайта для целей разработки (т.е. мне нужно решение, которое может быть отключено и основано на переменной среды). API запускается в контейнере Docker, который запускается как сервис Docker-Compose.
PHP API не использует какую-либо инфраструктуру MVC.
Мой опыт работы с PHP ограничен, поэтому я знаю, что у меня впереди кое-какие исследования, но в то же время я был бы признателен за любой переход к следующим вопросам:
nginx
или же php-fpm
уровень контейнера, чтобы запросы к этим контейнерам регистрировались еще до получения кода PHP? nginx
или же php-fpm
контейнеры, чтобы убедиться, что журналы следят, когда я запускаю docker-compose up
?Вот мои потребности регистрации:
Ниже docker-compose.yml
файл.
version: '2'
services:
gearman:
image:gearmand
redis:
image: redis
database:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: ******
MYSQL_DATABASE: database
volumes:
- dbdata:/var/lib/mysql
ports:
- 3306:3306
sphinx:
image:sphinx
links:
- database
memcached:
image: memcached
ports:
- "11211:11211"
php_fpm:
image:php-fpm
links:
- redis
- memcached
- database
environment:
REDIS_SERVER: redis
DATABASE_HOST: database
RW_DATABASE_HOST: database
RO_DATABASE_HOST0: database
DATABASE_USER: root
DATABASE_PASS: ******
volumes:
- ./website:/var/www/website/
- /var/run
nginx:
image:nginx
links:
- php_fpm
ports:
- "80:80"volumes_from:
- php_fpm
volumes:
dbdata:
driver: local
Контейнер регистрировал, используя все настройки по умолчанию, но мой клиент указывал на другой сервер, но только для того, чтобы оставить след.
Внутри php_fpm контейнера (docker exec -it dev_php_fpm_1 /bin/bash
), вы можете cat /etc/php5/fpm/php.ini
, который показывает настройки по умолчанию error_log:
; Log errors to specified file. PHP's default behavior is to leave this value
; empty.
; http://php.net/error-log
; Example:
;error_log = php_errors.log
; Log errors to syslog (Event Log on Windows).
;error_log = syslog
Просто пользователь функция error_log написать в логгер ОС по умолчанию.
Зарегистрируйте свой сервис php_fpm с docker logs -f -t dev_php_fpm_1
,
Обновить:
В случае, если error_log урезан для ваших целей, вы также можете просто написать функцию
file_put_contents(realpath(dirname(__FILE__)) . './requests.log', $msg, FILE_APPEND);
и затем следите за этим: tail -f ./requests.log
— либо изнутри контейнера, либо снаружи контейнера, если вы используете локальные тома.
Других решений пока нет …