You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何控制Zammad的production.log日志级别并转至Docker日志?

解决Zammad日志过大及重定向至Docker日志的问题

针对你遇到的Zammad production.log 体积快速增长的问题,我分两部分给出具体的实操方案:

一、调整日志级别以减少日志生成量

Zammad基于Rails框架,主要通过两种方式控制日志输出的详细程度:

1. 用环境变量快速配置(Docker部署首选)

在你的Docker配置文件(比如docker-compose.yml)里添加RAILS_LOG_LEVEL环境变量,把默认的info级别调整为warn或error,这样会过滤掉大量非必要的调试、信息类日志:

services:
  zammad:
    # 其他容器配置...
    environment:
      - RAILS_LOG_LEVEL=warn # 可选值:debug, info, warn, error, fatal, unknown

修改完成后重启Zammad容器,配置立即生效。

2. 修改Zammad核心配置文件(精细控制)

如果需要更个性化的日志规则,可以挂载并编辑Zammad的config/zammad.yml文件,在production区块中指定日志级别:

production:
  # 其他配置项...
  log_level: warn

注意:Docker部署时需要将本地修改后的配置文件挂载到容器内的/opt/zammad/config/zammad.yml路径,修改后重启容器即可。

二、将Zammad日志重定向至Docker日志系统

要让Zammad日志纳入Docker的日志管理体系,核心是让Zammad停止写入本地文件,转而将日志输出到容器的标准输出(stdout),Docker会自动捕获这些日志:

1. 开启日志输出到标准输出

在Docker配置中添加RAILS_LOG_TO_STDOUT=true环境变量:

services:
  zammad:
    # 其他容器配置...
    environment:
      - RAILS_LOG_TO_STDOUT=true

配置生效后,Zammad会停止写入production.log,所有日志都会输出到容器的标准输出,Docker会自动收集这些日志。

2. 配置Docker日志轮转(避免日志堆积)

为了防止Docker日志本身占用过多磁盘空间,可以在配置中设置日志驱动的大小限制,比如在docker-compose.yml中添加:

services:
  zammad:
    # 其他容器配置...
    logging:
      driver: "json-file"
      options:
        max-size: "100m" # 单个日志文件最大100MB
        max-file: "5"    # 最多保留5个轮转日志文件

这样Docker会自动对日志进行切割和清理,无需手动管理。

额外小提示

如果之前的production.log已经占用大量空间,你可以进入容器执行truncate -s 0 /opt/zammad/log/production.log清空文件,或者直接删除该文件(启用日志重定向后这个文件不会再被写入)。

内容的提问来源于stack exchange,提问作者SScholl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:08:13