【问题标题】:docker container json log showing INFO and WARNING statements with stderr as streamdocker 容器 json 日志显示以 stderr 作为流的 INFO 和 WARNING 语句
【发布时间】:2020-06-05 14:06:27
【问题描述】:

在 -json.log 上找到一些带有 INFO 和 WARNING 的条目,流作为标准错误。实际上,这些必须与流作为标准输出。 任何人都可以提供线索我需要在哪里调查这个吗?这是 docker 相关配置还是我的应用程序相关配置? 例如,

{"log":"[2020/02/20-08:50:26,557]-[**INFO**   ]-[362]-[testlogger]--4: 202a68dfd8621ee9de1a7ff4\n","stream":"stderr","time":"2020-02-20T08:50:26.55867314Z"}

【问题讨论】:

  • 这是您的应用程序或日志设置中的内容,而不是 Docker 本身。你可以通过运行your application >/dev/null 在 Docker 之外看到这一点,这将抑制 stdout 并只向你展示进入 stderr 的内容。
  • 谢谢大卫,当我单独运行应用程序时,它会正确显示 INFO 和 WARNING 级别,但是在 docker json-file 日志中它显示为 stream:stderr。那么知道为什么 docker 容器认为这是一个错误吗?因为<Container -d>-json.log是docker自己生成的
  • 当你启动一个进程时,有两个不同的地方可以输出,标准输出和标准错误流。这有点像从两个打开的文件开始并能够向其中一个写入消息的过程。 Docker 并不是说​​“这是一个错误”,而是说“应用程序将其写入标准错误”。演示这种拆分的另一种方法是运行your application &gt;stdout.log 2&gt;stderr.log。
  • 哦!好的,意味着我需要搜索 stdout [ 1 ] 流还重定向 stderr [ 2 ] 的位置。理解。感谢您提供信息。
  • 除此之外,我在我的 Spring Boot 示例应用程序中使用了 System.err.println() 和 System.out.println()。两者都显示为 stream:"stdout" 。所以我的问题是,docker 会在哪里配置这些。如果你有想法,谁能告诉我?

标签: docker docker-compose docker-logs


【解决方案1】:

cat $(docker ps -aq | xargs -I'{}' docker inspect --format='{{.LogPath}}' '{}' | xargs ls) |grep WARNING 2>&1

【讨论】:

  • 这并没有回答导致这些日志消息的原因以及如何将流从 stderr 更改为 stdout 的问题。
猜你喜欢
  • 2017-11-19
  • 2021-06-20
  • 2021-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-22
  • 1970-01-01
相关资源
最近更新 更多