我正在做一个项目,其中有一个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函数写入默认的OS记录器即可。
使用记录您的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
-从容器内部或从容器外部(如果使用的是本地卷)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句