我正在开展一个项目,我有一个连接到PHP API的iOs应用程序。我想将所有传入的请求记录到网站服务以进行开发(即我需要一个可以关闭并基于环境变量的解决方案)。 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
答案 0 :(得分:0)
容器使用所有默认设置进行记录,但我的客户端指向另一台服务器,但只留下一条路径。
在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 function即可写入默认操作系统记录器。
使用docker logs -f -t dev_php_fpm_1
记录php_fpm服务。
更新
如果出于您的目的而截断error_log,您也可以简单地编写一个函数
file_put_contents(realpath(dirname(__FILE__)) . './requests.log', $msg, FILE_APPEND);
然后尾随它:tail -f ./requests.log
- 无论是从容器内部还是从容器外部,如果您使用的是本地卷。