用途:配置 Kamal 部署中的日志流向,分为两个相互独立的关注点。
主要能力:
- 容器日志(logging: 键):控制应用容器的 Docker 日志驱动与选项。driver 通过 --log-driver 传给 Docker,如 json-file;options 下每项通过 --log-opt key=value 传入,如 max-size: 100m,常用于限制容器日志大小以免占满磁盘。可写在根级应用于全部,也可写在 servers: 下某个角色内覆盖该角色。
- 输出日志(output: 键):控制 Kamal 自身命令输出(部署日志)的去向,支持 otel 与 file 两个 logger,可单独或同时启用。otel 通过 OTLP HTTP 发送到兼容端点(如 endpoint: http://otel-gateway:4318),日志以 OTLP log records 形式发送,资源属性来自 Kamal 部署标签(service、version、performer、destination 等)。file 将部署日志写到运行 Kamal 的本地机器目录(如 path: /var/log/kamal/),每次部署生成一个文件,按时间戳与命令命名。
使用方式:先查看 config/deploy.yml 中是否已有 logging: 或 output: 块、service: 名称与 servers: 下的角色;若使用 destinations,检查 config/deploy.<destination>.yml 中的覆盖配置,再补齐缺失项。
限制与注意:logging: 只配置驱动,不负责读取日志;查看运行中容器日志需用 kamal app logs(accessory 用 kamal accessory logs)。options 的合法键取决于所选 Docker 驱动,需查阅 Docker 日志驱动文档。不要混淆两个键:logging: 管应用容器日志,output: 管 Kamal 部署日志。
适用场景:需要限制容器日志体积、将容器日志交给特定驱动,或为部署过程保留可查询记录(OTel 后端或本地文件)时使用。