从Docker容器记录PHP API请求信息

埃里克·H。

我正在做一个项目,其中有一个iOs应用程序连接到PHP API。我想将所有传入请求记录到网站服务中以用于开发目的(即,我需要一个可以关闭并基于环境变量的解决方案)。该API在docker容器中运行,该容器作为docker-compose服务启动。

PHP API未使用任何类型的MVC框架。

我的PHP经验有限,所以我知道我需要做一些研究,但是与此同时,对于以下问题的任何快速入门,我将不胜感激:

  • 是否有一个Composer库,我可以将其插入将写入带尾日志的PHP代码中?
  • 我可以在nginxphp-fpm容器级别插入任何东西,以便在获取PHP代码之前记录对这些容器的请求吗?
  • 是否需要在容器nginxphp-fpm容器中进行任何配置,以确保在运行时记录日志docker-compose up

这是我的日志记录需求:

  • 请求方法
  • 要求网址
  • GET查询参数,PUT和POST参数(这些将为JSON格式)
  • 回应码
  • 反应体
    • 我感兴趣的日志都是application / json。但是,我不介意将任何记录都记录下来的厨房水槽选项。
  • 请求和响应头
    • 我将不需要99%的时间,因此它们不是必需的。但是最好将它们配置为开/关。

以下是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
埃里克·H。

该容器正在使用所有默认设置进行日志记录,但是我的客户端指向了另一台服务器,但只留下了痕迹。

在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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Docker容器HTTP请求限制

来自分类Dev

容器之间的Docker HTTP请求

来自分类Dev

Docker记录到容器

来自分类Dev

发送HTTP响应后如何记录HTTP请求/响应信息?

来自分类Dev

如何使用Docker Registry API提取有关容器的信息?未经授权

来自分类Dev

从docker ui容器调用到api容器

来自分类Dev

Docker容器内的GC统计信息

来自分类Dev

从容器内部检查 docker 容器的统计信息

来自分类Dev

使用Foursquare API请求用户信息

来自分类Dev

请求咨询:如何将WCF Web服务请求信息记录到数据库

来自分类Dev

从多进程Docker容器记录

来自分类Dev

Laravel MVC (PHP),请求错误信息

来自分类Dev

在Docker容器中请求特定的ubuntu版本

来自分类Dev

无法在 docker 容器之间发出 HTTP 请求

来自分类Dev

Whatsapp API PHP代码请求

来自分类Dev

API CloudConvert curl请求PHP

来自分类Dev

Azure API-PHP请求

来自分类Dev

Brandwatch php的HTTP API请求

来自分类Dev

如何将信息从PHP-FPM传递到NginX,以不将当前请求记录在访问日志中?

来自分类Dev

如何在Rails中记录API请求?

来自分类Dev

请求的API平台日志记录头

来自分类Dev

循环访问 API 请求以记录值

来自分类Dev

如何在容器中记录HTTP请求和时间成本?

来自分类Dev

Docker信息显示了容器,但是Docker容器ls没有显示

来自分类Dev

如何从前端容器访问Docker API容器?

来自分类Dev

如何从Angular Nginx容器连接到Node API docker容器

来自分类Dev

Docker:如何向容器提供秘密信息?

来自分类Dev

设备映射到Docker中的容器缺少信息

来自分类Dev

如何解释Docker容器的端口信息