【问题标题】:Why tty=true(in docker-compose.yml) makes log highlights on Gin app?为什么 tty=true(in docker-compose.yml) 在 Gin 应用程序上突出显示日志?
【发布时间】:2021-01-22 01:48:35
【问题描述】:

环境

Docker 版本 19.03.13,构建 4484c46d9d
docker-compose 版本 1.22.0,构建 f46880fe

发生了什么

我开发了非常简单的 RESTful API 来学习使用 Gin。
当我注意到我的代码中不需要 tty=true(in docker-compose.yml) 并将其删除时,日志突出显示奇怪地消失了。

在删除 tty=true 之前

删除 tty=true 后

代码

docker-compose.yml

version: '3'

volumes:
  vendor:

services:
  api:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 3001:3001
    tty:
      true
    depends_on: 
      - db
  db:
    image: postgres:alpine
    environment:
      POSTGRES_USER: gorm
      POSTGRES_PASSWORD: gorm
      POSTGRES_DB: gorm
      POSTGRES_HOST: db
    ports:
      - 5432:5432

其他代码 https://gist.github.com/Asuha-a/521b37c8ac56f5c52a1d4b5a76b2726d

我想知道

我不知道原因。 你怎么看?

【问题讨论】:

  • @ShubhamSrivastava 谢谢。事实证明,问题不仅仅发生在杜松子酒上
  • 代码可以判断 stdout 是否为 tty,并据此做出有关着色的决定。在日志文件中,您通常需要颜色转义码,这会使文件更难阅读。
  • @DavidMaze 我不确定我是否理解您的评论,尤其是第一句中的主题。 “代码”是终端的代码吗?
  • 在这种情况下,我的意思是 Gin 正在使用的日志库。你可以调用一个函数(谷歌很快找到我this library)并判断标准输出是终端还是文件、管道或其他东西。

标签: docker go docker-compose


【解决方案1】:

这是通过评论解决的。

DavidMaze:代码可以判断 stdout 是否为 tty,并据此做出有关着色的决定。在日志文件中,您通常不需要颜色转义码,这会使文件更难阅读。

我:我不确定我是否理解您的评论,尤其是第一句话中的主题。 “代码”是终端的代码吗?

DavidMaze:在这种情况下,我指的是 Gin 正在使用的日志库。你可以调用一个函数(谷歌很快找到我这个库)并判断标准输出是终端还是文件、管道或其他东西。

【讨论】:

    猜你喜欢
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 2015-04-02
    • 2011-05-13
    相关资源
    最近更新 更多