Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php docker容器查看php日志信息?_Php_Docker_Containers - Fatal编程技术网

如何使用php docker容器查看php日志信息?

如何使用php docker容器查看php日志信息?,php,docker,containers,Php,Docker,Containers,我有一个php fpm docker容器。Php fpm在容器中运行,我可以在主机上获取Php fpm的日志吗?如果可以,怎么办?常见的方法是容器中的应用程序不登录到文件,而是在stdout/stderr上输出日志。容器主进程打印到stdout/stderr的任何内容都由docker的内置日志记录功能收集,并可以使用docker日志查看 默认情况下,日志使用json文件日志驱动程序存储在每个容器中,当容器本身被删除时,日志将被删除,但还有其他可用的日志驱动程序(请参阅),允许您将这些日志发送到(

我有一个php fpm docker容器。Php fpm在容器中运行,我可以在主机上获取Php fpm的日志吗?如果可以,怎么办?

常见的方法是容器中的应用程序不登录到文件,而是在
stdout
/
stderr
上输出日志。容器主进程打印到stdout/
stderr
的任何内容都由docker的内置日志记录功能收集,并可以使用
docker日志查看

默认情况下,日志使用
json文件
日志驱动程序存储在每个容器中,当容器本身被删除时,日志将被删除,但还有其他可用的日志驱动程序(请参阅),允许您将这些日志发送到(例如
syslog
journald
gelf

也看到


常见的方法是容器内的应用程序不登录到文件,而是在
stdout
/
stderr
上输出日志。容器主进程打印到stdout
/
stderr
的任何内容都由docker的内置日志记录功能收集,并可以使用
docker日志查看

默认情况下,日志使用
json文件
日志驱动程序存储在每个容器中,当容器本身被删除时,日志将被删除,但还有其他可用的日志驱动程序(请参阅),允许您将这些日志发送到(例如
syslog
journald
gelf

也看到


    • Docker容器的标准是登录到
      stdout
      /
      stderr
      。但是,对于某些PHP运行时,例如
      phpfpm
      ,这并不适用,因为日志是如何在和中被破坏的

      因此,我改变了在卷上写入日志的方法,并使用一个函数将其放入
      stderr
      ,从而进入Docker的日志集合和/或您的orchestrator

      示例
      docker compose.yml
      部分:

      cli:
          build: .
          volumes:
              - logs:/srv/annotations/var/logs
      logger:
          image: busybox:1.27.2
          volumes:
              - logs:/logs
          # be careful, this will only tail alredy existing files
          command: tail -f /logs/all.json
          depends_on:
              - cli
      

      Docker容器的标准是登录到
      stdout
      /
      stderr
      。但是,对于某些PHP运行时,例如
      phpfpm
      ,这并不适用,因为日志是如何在和中被破坏的

      因此,我改变了在卷上写入日志的方法,并使用一个函数将其放入
      stderr
      ,从而进入Docker的日志集合和/或您的orchestrator

      示例
      docker compose.yml
      部分:

      cli:
          build: .
          volumes:
              - logs:/srv/annotations/var/logs
      logger:
          image: busybox:1.27.2
          volumes:
              - logs:/logs
          # be careful, this will only tail alredy existing files
          command: tail -f /logs/all.json
          depends_on:
              - cli
      

      如果将PHP日志(如应用程序日志)发送到stdout,它们将在HTTP响应中发送。也许有一种方法可以将他们的stderr发送到php-fpm-stderr或类似的格式。@giorgiosironi下面是官方php-fpm映像如何处理它;谢谢,但是遇到了问题,因此我放弃了stderr方法,因为JSON日志会被新行和php fpm
引入的其他注释弄乱或损坏。如果您将php日志(如应用程序日志)发送到stdout,它们将在HTTP响应中发送。也许有一种方法可以将他们的stderr发送到php-fpm-stderr或类似的格式。@giorgiosironi下面是官方php-fpm映像如何处理它;谢谢,但是遇到了问题,因此我放弃了stderr方法,因为JSON日志会被
phpfpm
引入的换行符和其他注释弄乱或损坏。