Search code examples
ejabberdejabberd-apiejabberd-auth

ejabberd cannot write log files when deployed with docker-composer


Deployed using docker-composer, check that no log files are generated in the /home/ejabberd/logs folder. Check docker logs to find errors

2023-09-09 07:10:37.559689+00:00 [critical] Failed to set logging: {error,
                           {handler_not_added,
                               {open_failed,"/home/ejabberd/logs",eisdir}}}
2023-09-09 07:10:37.825095+00:00 [info] Loading configuration from /home/ejabberd/conf/ejabberd.yml

The following are my docker-composer configuration files, docker-composer.yaml:

  ejabberd:
    image: ejabberd/ecs
    # image: simpleman/ejabberd:1.0.4
    container_name: ejabberd
    environment:
      # - [email protected]
      # - ERLANG_COOKIE=dummycookie123
      - CTL_ON_CREATE=register 1000 192.168.15.99 1000
      - EJABBERD_LOG_PATH=/home/ejabberd/logs
    healthcheck:
      test: netstat -nl | grep -q 5222
      start_period: 5s
      interval: 5s
      timeout: 5s
      retries: 120
    user: root
    ports:
      - "5222:5222"
      - "5269:5269"
      - "5280:5280"
      - "5443:5443"
      # - "3478:3478"
      # - "3478:3478/udp"
      # - "5349:5349"
      # - "5349:5349/udp"
      - "4200-4210:4200-4210"
      # - "5060:5060/tcp"
      # - "5060:5060/udp"
      # - "49152-49252:49152-49252"
      # - "49152-49252:49152-49252/udp"
    #extra_hosts:
    volumes:
      - ./ejabberd/conf/ejabberd.yml:/home/ejabberd/conf/ejabberd.yml
      - ./ejabberd/conf/ejabberdctl.cfg:/home/ejabberd/conf/ejabberdctl.cfg
      - ./ejabberd/logs:/home/ejabberd/logs:rw
      - ./ejabberd/database:/home/ejabberd/database:rw
    restart: always
    logging: *default-logging
    networks:
      - network

dar auth:

root@ubnutu-template:/data/# ls -l
total 40
-rwxrwxrwx 1 root root 3728 Sep  9 03:20 docker-compose.yaml
drwxrwxrwx 5 root root 4096 Aug 27 02:42 ejabberd

I could not get through this error. Any help is greatly appreciated.


Solution

  • EJABBERD_LOG_PATH=/home/ejabberd/logs

    {open_failed,"/home/ejabberd/logs",eisdir}}}

    eisdir means: "Error, it is a directory"

    You can provide the filename with

    EJABBERD_LOG_PATH=/home/ejabberd/logs/ejabberd.log
    

    Or you can provide the directory with

    LOGS_DIR=/home/ejabberd/logs/