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

使用Docker Compose部署ejabberd无法写入日志文件求助

解决ejabberd Docker部署日志目录无法生成日志的问题

错误原因分析

从Docker日志的报错信息:

2023-09-09 07:10:37.559689+00:00 [critical] Failed to set logging: {error,
{handler_not_added,
{open_failed,"/home/ejabberd/logs",eisdir}}}

eisdir的含义是程序尝试打开的路径是目录,但实际需要的是文件路径。你在环境变量中设置EJABBERD_LOG_PATH=/home/ejabberd/logs,将日志路径指向了目录,而ejabberd要求这个变量必须指向具体的日志文件,因此无法创建日志处理器,导致日志文件无法生成。

解决步骤

1. 修改Docker Compose中的日志路径配置

将EJABBERD_LOG_PATH改为目录下的具体文件名,比如/home/ejabberd/logs/ejabberd.log:

ejabberd:
  # ... 其他配置
  environment:
    # ... 其他环境变量
    - EJABBERD_LOG_PATH=/home/ejabberd/logs/ejabberd.log

2. 确认宿主机日志目录权限

虽然当前目录权限为777,可执行以下命令确保容器内root用户拥有完整读写权限:

chown -R root:root ./ejabberd/logs
chmod -R 755 ./ejabberd/logs

3. 重启ejabberd容器

执行命令重启服务,使配置生效:

docker-compose down && docker-compose up -d

可选:检查ejabberd配置文件

若问题仍存在,打开挂载的ejabberd.yml,确认日志相关配置无冲突,示例配置如下:

loglevel: info
log_rotate_size: 10485760  # 单日志文件最大10MB
log_rotate_count: 10        # 保留10个历史日志文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:13:22