如何查看PHP的日志信息与PHPdocker容器?

我有一个php-fpmdocker集装箱。 Php-fpm在容器内部运行,我可以在主机上获得php-fpm的日志吗? 如果可以,怎么办?

常用的方法是容器内的应用程序不会login到文件 ,而是在stdout / stderr上输出日志。 任何由容器的主进程打印到stdout / stderr都由stderr的内置日志工具来收集,并且可以使用docker logs <container-name>来查看。

默认情况下,日志使用json-file日志logging驱动程序存储在每个容器中,并且在容器本身被删除时将被删除,但还有其他日志logging驱动程序可用(请参阅configuration日志logging驱动程序 ),以便将这些日志发送到(例如) syslogjournaldgelf

另见

  • 查看容器的日志
  • docker logs

Docker容器的标准是login到stdout / stderr 。 但是,对于某些PHP运行时(例如php-fpm ,这并不适用,因为日志的长度和格式会发生变化 。

因此,我将自己的方法转换为在卷上写入日志,并使用sidecar容器将其放入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