从Docker容器记录PHP API请求信息
我正在做一个项目,我有一个iOs应用程序连接到一个PHP API。我想将所有传入的请求记录到网站服务中,以用于开发目的(即我需要一个可以关闭并基于环境变量的解决方案)。API在docker容器中运行,该容器作为docker compose服务启动 PHP API没有使用任何类型的MVC框架 我的PHP经验有限,因此我知道我还有一些研究工作要做,但同时,我希望能从以下问题入手:从Docker容器记录PHP API请求信息,php,nginx,docker,Php,Nginx,Docker,我正在做一个项目,我有一个iOs应用程序连接到一个PHP API。我想将所有传入的请求记录到网站服务中,以用于开发目的(即我需要一个可以关闭并基于环境变量的解决方案)。API在docker容器中运行,该容器作为docker compose服务启动 PHP API没有使用任何类型的MVC框架 我的PHP经验有限,因此我知道我还有一些研究工作要做,但同时,我希望能从以下问题入手: 是否有一个编写器库,我可以将它插入到我的PHP代码中,并将其写入一个详细的日志 我是否可以在nginx或php fpm
- 是否有一个编写器库,我可以将它插入到我的PHP代码中,并将其写入一个详细的日志
- 我是否可以在
或nginx
容器级别插入任何内容,以便在访问php代码之前记录对这些容器的请求李>php fpm
- 是否需要在
或nginx
容器中配置任何内容,以确保在运行php fpm
时跟踪日志docker compose up
- 请求方法
- 请求URL
- GET查询参数、PUT和POST参数(将采用JSON格式)
- 响应代码
- 响应体
- 我感兴趣的日志都是application/json。然而,我不介意厨房水槽选项,任何东西都会被记录下来
- 请求和响应头
- 99%的时间我都不需要这些,所以它们不是我的需要。但最好将它们配置为开/关
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
,其中显示默认的错误日志设置:
; 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
只需用户写入默认操作系统记录器
使用docker logs-f-t dev_php_fpm_1记录您的php_fpm服务
更新: 如果出于您的目的错误日志被截断,您也可以简单地编写一个函数
file_put_contents(realpath(dirname(__FILE__)) . './requests.log', $msg, FILE_APPEND);
然后跟踪它:tail-f./requests.log
-从容器内部或容器外部(如果您使用的是本地卷)