2017-01-19 13 views
0

PHP APIに接続するiOsアプリケーションがあるプロジェクトで作業しています。私は開発目的のためにすべての着信要求をウェブサイトサービスに記録したい(つまり、私は環境変数に基づいてオフにすることができる解決策が必要です)。 APIはドッカーコンテナで実行され、ドッカーコンテナサービスとして起動されます。DockerコンテナからのPHP APIリクエスト情報のログ

PHP APIは、MVCフレームワークを使用していません。

私のPHPの経験は限られているので、私は、私は先に私のいくつかの研究を持って知っているが、その間に、私は次の質問へのジャンプスタートいただければと思います:

  • 作曲はありますがテロログに書き込むPHPコードにプラグインできるライブラリ?
  • nginxまたはphp-fpmコンテナレベルで何かを接続することができます。そのため、これらのコンテナへのリクエストは、PHPコードに到達する前に記録されますか?
  • nginxまたはphp-fpmコンテナのいずれかに設定する必要があるものはありますか。docker-compose upを実行したときにログの末尾が確実に確認されていますか?
  • ここ

は私のログのニーズがある:

  • リクエストメソッド
  • リクエストURL
  • 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 

答えて

0

コンテナはすべてのデフォルト設定を使用してログを記録していましたが、クライアントは別のサーバーを指していましたが、トレイルを残していました。デフォルトのerror_logの設定を示し

インサイド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 

ただ、ユーザーerror_log functionは、OSのロガーをデフォルトに書き込みます。

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 - コンテナ内部からかのいずれかからローカルボリュームを使用している場合はコンテナの外側にあります。

関連する問題