当前位置: 首页 > 面试题库 >

如何将Docker容器日志重定向到单个文件?

海鸣
2023-03-14
问题内容

我想将我的docker容器的所有日志重定向到单个日志文件以进行分析。我试过了

docker logs container > /tmp/stdout.log 2>/tmp/stderr.log

但这使登录两个不同的文件。我已经试过了

docker logs container > /tmp/stdout.log

但它没有用。


问题答案:

无需重定向日志。

Docker默认将日志存储到一个日志文件中。要检查日志文件路径,请运行命令:

docker inspect --format='{{.LogPath}}' containername

/var/lib/docker/containers/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334-json.log

打开该日志文件并进行分析。

如果您重定向日志,则只能在重定向之前获取日志。您将无法看到实时日志。

编辑:

要查看实时日志,可以在以下命令中运行

tail -f `docker inspect --format='{{.LogPath}}' containername`

注意:

/var/lib/docker/containers/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334-json.log仅当docker生成日志(如果没有日志)时,才会创建此日志文件,然后该文件将不存在。如果我们运行命令docker logs containername,它类似于某个时候,但什么也不返回。在这种情况下,该文件将不可用。



 类似资料:
  • 我想在日志文件中看到我的jnlp标准输出。请建议。p. s.我jnlp在windows下运行,使用log4j记录器

  • 为了使项目的开发更容易,我在docker容器中放置了它所依赖的几个服务。这使得项目配置中的“localhost”在传递给其中一个容器时具有不同的含义。 编辑 清楚地说,我试图将容器的一个端口转发到主机,因此当容器中运行的进程试图访问localhost:5432时,它将连接到主机的端口5432。 结束 我目前正在使用 将目标为“本地主机”的任何内容重定向到容器的主机。它在这种情况下有效,但我更愿意找

  • 问题内容: 我对jdk日志记录配置有疑问。我有一个使用JDK Logging输出消息的EJB(已部署到glassfish中)。因此,我使用具有以下代码的命名记录器: 我知道可以通过将以下行添加到Glassfish的logging.properties文件中来为记录器配置日志级别: 但是,如何为记录器指定输出文件?我想将来自名为“ org.imixs.workflow”的记录器的所有消息放入单独的文

  • 问题内容: 我有一个在docker-machine上运行的weblogic容器(正在使用docker toolbox在Windows 7上运行),并希望将日志从容器自动保存到Windows机器。 我知道我可以使用命令,但是,不是每次都将日志记录到Windows计算机上,而是有更好的方法将日志从容器保存到Windows计算机上的文件夹中吗? 问题答案: 请参阅“ Docker日志记录策略 ”,其中介

  • 我有一个在 docker 容器中运行的 mysql 容器,该容器故意无法通过任何端口访问,但可供其他 Docker 容器访问。 例如,考虑以下mysql容器 现在我想在我的主机上存在的mysql中运行一个转储文件。 但是我得到了回应 如何将我的主机输出到docker容器? 请注意一件事,它不是关于错误的,通过删除-it或-i,我没有收到错误,但我无法通过管道输出到docker容器。 问题是如何将任

  • 问题内容: 我使用以下命令读取了Docker容器日志输出 我通过调用来将大量数据记录到node.js应用程序的日志中。我需要清理日志,因为它太长了,并且该命令首先运行日志的现有行,然后结束。我该如何清洁使其再次变短?我想查看类似的命令: 但是它似乎不存在。 问题答案: 首先,如果只需要查看较少的输出,则可以让docker只向您显示更新的行: 或者,您可以限制一些行: 要删除Docker for L