New Chat
Ctrl
K
Chat History
Mobile App

Makefile在Go项目中的用途

docker-compose.yml 中,logging 配置的作用
docker-compose.yml 里的 logging: 就是把容器写到 stdout/stderr 的日志交给哪一个“日志驱动”去收集、过滤、存储或轮转。
默认驱动是 json-file,仅靠它就能解决 90% 的“看日志+占磁盘”问题;其他驱动(syslog、journald、fluentd、awslogs…)则对接外部日志系统。
────────────────────
  1. 语法速查
yaml
Copy
services:
  app:
    image: myapp
    logging:
      driver: "json-file"          # 驱动名
      options:                     # 驱动参数(键值对)
        max-size: "10m"
        max-file: "3"
        labels: "production_status"
────────────────────
2. 常见驱动 & 用途
Table
Copy
driver场景关键 options
json-file (默认)本地调试、单机max-size, max-file, labels
syslog进宿主机 syslog / rsyslogsyslog-address, tag
journaldsystemd 体系 (CentOS 7+, Ubuntu 16+)tag, labels
fluentd / logstash集中日志平台fluentd-address, tag
awslogs直接进 AWS CloudWatchawslogs-group, awslogs-stream
none彻底丢弃日志—
────────────────────
3. 轮转磁盘实战
Copy
logging:
  driver: "json-file"
  options:
    max-size: "10m"   # 单文件 10 MB
    max-file: "3"     # 最多保留 3 个轮转文件
效果:
app-json.log → 达到 10 MB → 重命名为 app-json.log.1 → 新建 app-json.log,循环 3 份后自动删最旧的。
磁盘再也不怕被刷爆。
────────────────────
4. 查看 & 清理
  • 看日志
    docker compose logs -f app
  • 手动清理
    docker compose down 或
    docker system prune -f --volumes
────────────────────
5. 与 Dockerfile/代码的关系
  • 代码里只要继续 console.log()、fmt.Println() → 写到 stdout/stderr
  • logging: 不负责“应用写文件日志”,只负责“容器 stdout/stderr 如何被 Docker 处理”。
────────────────────
一句话总结
logging: 就是告诉 Docker:
“这些 stdout/stderr 日志用什么驱动、放到哪里、多大就轮转、保留几份”。