hegphegp opened a new issue, #9514:
URL: https://github.com/apache/rocketmq/issues/9514

   ### Before Creating the Bug Report
   
   - [x] I found a bug, not just asking a question, which should be created in 
[GitHub Discussions](https://github.com/apache/rocketmq/discussions).
   
   - [x] I have searched the [GitHub 
Issues](https://github.com/apache/rocketmq/issues) and [GitHub 
Discussions](https://github.com/apache/rocketmq/discussions)  of this 
repository and believe that this is not a duplicate.
   
   - [x] I have confirmed that this bug belongs to the current repository, not 
other repositories of RocketMQ.
   
   
   ### Runtime platform environment
   
   docker
   docker-compose
   
   
   ### RocketMQ version
   
   version:5.3.2/5.3.1,日志乱码, dashboard也乱码
   
   ### JDK Version
   
   _No response_
   
   ### Describe the Bug
   
   version:5.3.2/5.3.1,日志乱码, dashboard也乱码
   docker-compose部署apache/rocketmq:5.3.1,控制台日志乱码
   ```
   #docker-compose.yml
   version: '3.8'  # 定义 Docker Compose 文件的版本,这里使用的是 3.8 版本
   
   services:
     namesrv1:
       image: apache/rocketmq:5.3.1  # 指定使用的 Docker 镜像,这里使用 Apache RocketMQ 
5.3.1 版本
       container_name: rmqnamesrv  # 设置容器的名称为 rmqnamesrv
       environment:
         - JAVA_OPT=-server -Xms256m -Xmx372m  -Dfile.encoding=UTF-8 # 设置 Java 
相关的 JVM 参数,限制最小和最大堆内存为 512MB
         - LANG=en_US.UTF-8
         - LC_ALL=en_US.UTF-8
       ports:
         - 9876:9876  # 映射容器的 9876 端口到宿主机的 9876 端口,RocketMQ Nameserver 的默认端口
       command: sh mqnamesrv  # 指定容器启动时执行的命令,这里是启动 Nameserver 服务
   
     broker1:
       image: apache/rocketmq:5.3.1  # 使用相同版本的 RocketMQ 镜像
       container_name: rmqbroker  # 设置容器名称为 rmqbroker
       ports:
         - 10909:10909  # 映射容器的 10909 端口到宿主机的 10909 端口,RocketMQ Broker 的默认端口
         - 10911:10911  # 映射容器的 10911 端口到宿主机的 10911 端口,RocketMQ Broker 监听的另一端口
       environment:
         - NAMESRV_ADDR=namesrv1:9876  # 设置 Nameserver 的地址,用于连接 Nameserver
         - JAVA_OPT=-server -Xms512m -Xmx512m -Duser.home=/home/rocketmq  
-Dfile.encoding=UTF-8 # 设置 Java 相关的 JVM 参数,限制最小和最大堆内存为 512MB
         - LANG=en_US.UTF-8
         - LC_ALL=en_US.UTF-8
       volumes:
         - ./conf/broker.conf:/home/rocketmq/rocketmq-5.3.1/conf/broker.conf  # 
将宿主机的 broker.conf 配置文件挂载到容器中,注意版本一定要对应5.3.1
       depends_on:
         - namesrv1  # 确保 Nameserver 容器在 Broker 容器之前启动
       command: sh mqbroker -c ../conf/broker.conf  # 启动 Broker 服务,指定配置文件路径
   
     # RocketMQ Console Web 管理界面服务
     rocketmq-dashboard:
       image: apacherocketmq/rocketmq-dashboard:2.0.1
       container_name: rmqconsole  # 设置容器名称为 rmqconsole
       ports:
         - 9080:8080  # 映射容器的 8080 端口到宿主机的 9080 端口,控制台的 Web UI 访问端口
       environment:
         - JAVA_OPTS=-Dserver.port=8080 -Drocketmq.namesrv.addr=namesrv1:9876  
-Dfile.encoding=UTF-8 # 设置 JAVA_OPTS,控制台监听 8080 端口,并连接 Nameserver 服务
         - LANG=en_US.UTF-8
         - LC_ALL=en_US.UTF-8
       depends_on:
         - namesrv1  # 确保 Nameserver 容器在 Console 容器之前启动
       restart: always
       deploy:
         resources:
           limits:
             cpus: '0.3'  # 限制该服务最多使用 0.3 个 CPU 核心
             memory: 256M  # 限制该服务最多使用 256MB 内存
   
   ```
   
   ```
   # conf/broker.conf
   # 集群配置
   brokerClusterName=DefaultCluster  # 设置 Broker 所在的集群名称。集群中的所有 Broker 实例应该有相同的 
`brokerClusterName`,默认为 `DefaultCluster`。
   brokerName=Broker-A  # 设置 Broker 的名称。每个 Broker 在集群中的名字应该唯一。这里命名为 
`Broker-A`,可以用于区分不同的 Broker 实例。
   brokerId=0  # 设置 Broker 的 ID,标识一个特定的 Broker 实例。`0` 表示主 Broker(Master)。如果是从 
Broker,ID 应该为负数,比如 `-1`。
   
   # 存储配置
   deleteWhen=04  # 设置消息存储日志文件的删除时间。`04` 表示每天 04:00 清理过期的消息文件。可以设置为 `04`、`08` 
等等。
   fileReservedTime=48  # 设置消息文件的保留时间,单位为小时。这里设置为 48 小时,表示消息存储文件会保留 48 
小时,之后会被删除。
   brokerRole=ASYNC_MASTER  # 设置 Broker 的角色。`ASYNC_MASTER` 表示该 Broker 
为异步主节点,所有写操作都会异步地提交到磁盘。
   # 如果是 `SYNC_MASTER`,则表示同步主节点,会等待所有数据写入磁盘后才返回成功;如果是 `SLAVE`,表示从节点。
   flushDiskType=ASYNC_FLUSH  # 设置刷盘的方式。`ASYNC_FLUSH` 
表示异步刷盘,写数据时不等待磁盘刷写完成后再返回,性能更好,但可能存在数据丢失风险。
   # 另外一个选项是 `SYNC_FLUSH`,表示同步刷盘,数据写入时会等待磁盘刷写完成,保证数据可靠性,但性能较差。
   
   # 网络配置
   listenPort=10911  # 设置 Broker 监听的端口号,客户端和其他 Broker 会通过此端口与该 Broker 进行通信。
   # brokerIP1=100.72.47.219  # 设置 Broker 对外暴露的 IP 地址。客户端和其他 Broker 会通过这个 IP 
地址来访问此 Broker。
   # 设置 Broker 对外暴露的 IP 地址。客户端和其他 Broker 会通过这个 IP 地址来访问此 Broker。
   brokerIP1=broker1
   # 这个地址一般设置为宿主机的 IP 地址或者外部可访问的地址。确保在多个 Broker 之间互相访问时能够正常连接。
   # namesrvAddr=100.72.47.219:9876  # 设置 NameServer 的地址。NameServer 是 RocketMQ 
的注册中心,Broker 会注册到 NameServer 上,客户端通过它来找到 Broker。
   namesrvAddr=namesrv1:9876
   # 设置 NameServer 的地址。NameServer 是 RocketMQ 的注册中心,Broker 会注册到 NameServer 
上,客户端通过它来找到 Broker。
   # `100.72.47.219:9876` 表示 NameServer 的 IP 地址和端口号。这里的 IP 地址应为外部可访问的地址,确保其他 
Broker 和客户端能够访问到 NameServer。
   
   ```
   
   docker logs查看日志乱码 docker logs -f --tail=333 rmqbroker
   
   
![Image](https://github.com/user-attachments/assets/5f350ff9-5b62-4688-b6ff-f73751258d21)
   
   
![Image](https://github.com/user-attachments/assets/c88d39b4-dbe3-456a-9c81-985abdbf3556)
   
   
![Image](https://github.com/user-attachments/assets/0b0c8118-8be1-4a61-b373-3d108c7bad09)
   
   
   ### Steps to Reproduce
   
   version:5.3.2/5.3.1,日志乱码, dashboard也乱码
   docker-compose部署apache/rocketmq:5.3.1,控制台日志乱码
   ```
   #docker-compose.yml
   version: '3.8'  # 定义 Docker Compose 文件的版本,这里使用的是 3.8 版本
   
   services:
     namesrv1:
       image: apache/rocketmq:5.3.1  # 指定使用的 Docker 镜像,这里使用 Apache RocketMQ 
5.3.1 版本
       container_name: rmqnamesrv  # 设置容器的名称为 rmqnamesrv
       environment:
         - JAVA_OPT=-server -Xms256m -Xmx372m  -Dfile.encoding=UTF-8 # 设置 Java 
相关的 JVM 参数,限制最小和最大堆内存为 512MB
         - LANG=en_US.UTF-8
         - LC_ALL=en_US.UTF-8
       ports:
         - 9876:9876  # 映射容器的 9876 端口到宿主机的 9876 端口,RocketMQ Nameserver 的默认端口
       command: sh mqnamesrv  # 指定容器启动时执行的命令,这里是启动 Nameserver 服务
   
     broker1:
       image: apache/rocketmq:5.3.1  # 使用相同版本的 RocketMQ 镜像
       container_name: rmqbroker  # 设置容器名称为 rmqbroker
       ports:
         - 10909:10909  # 映射容器的 10909 端口到宿主机的 10909 端口,RocketMQ Broker 的默认端口
         - 10911:10911  # 映射容器的 10911 端口到宿主机的 10911 端口,RocketMQ Broker 监听的另一端口
       environment:
         - NAMESRV_ADDR=namesrv1:9876  # 设置 Nameserver 的地址,用于连接 Nameserver
         - JAVA_OPT=-server -Xms512m -Xmx512m -Duser.home=/home/rocketmq  
-Dfile.encoding=UTF-8 # 设置 Java 相关的 JVM 参数,限制最小和最大堆内存为 512MB
         - LANG=en_US.UTF-8
         - LC_ALL=en_US.UTF-8
       volumes:
         - ./conf/broker.conf:/home/rocketmq/rocketmq-5.3.1/conf/broker.conf  # 
将宿主机的 broker.conf 配置文件挂载到容器中,注意版本一定要对应5.3.1
       depends_on:
         - namesrv1  # 确保 Nameserver 容器在 Broker 容器之前启动
       command: sh mqbroker -c ../conf/broker.conf  # 启动 Broker 服务,指定配置文件路径
   
     # RocketMQ Console Web 管理界面服务
     rocketmq-dashboard:
       image: apacherocketmq/rocketmq-dashboard:2.0.1
       container_name: rmqconsole  # 设置容器名称为 rmqconsole
       ports:
         - 9080:8080  # 映射容器的 8080 端口到宿主机的 9080 端口,控制台的 Web UI 访问端口
       environment:
         - JAVA_OPTS=-Dserver.port=8080 -Drocketmq.namesrv.addr=namesrv1:9876  
-Dfile.encoding=UTF-8 # 设置 JAVA_OPTS,控制台监听 8080 端口,并连接 Nameserver 服务
         - LANG=en_US.UTF-8
         - LC_ALL=en_US.UTF-8
       depends_on:
         - namesrv1  # 确保 Nameserver 容器在 Console 容器之前启动
       restart: always
       deploy:
         resources:
           limits:
             cpus: '0.3'  # 限制该服务最多使用 0.3 个 CPU 核心
             memory: 256M  # 限制该服务最多使用 256MB 内存
   
   ```
   
   ```
   # conf/broker.conf
   # 集群配置
   brokerClusterName=DefaultCluster  # 设置 Broker 所在的集群名称。集群中的所有 Broker 实例应该有相同的 
`brokerClusterName`,默认为 `DefaultCluster`。
   brokerName=Broker-A  # 设置 Broker 的名称。每个 Broker 在集群中的名字应该唯一。这里命名为 
`Broker-A`,可以用于区分不同的 Broker 实例。
   brokerId=0  # 设置 Broker 的 ID,标识一个特定的 Broker 实例。`0` 表示主 Broker(Master)。如果是从 
Broker,ID 应该为负数,比如 `-1`。
   
   # 存储配置
   deleteWhen=04  # 设置消息存储日志文件的删除时间。`04` 表示每天 04:00 清理过期的消息文件。可以设置为 `04`、`08` 
等等。
   fileReservedTime=48  # 设置消息文件的保留时间,单位为小时。这里设置为 48 小时,表示消息存储文件会保留 48 
小时,之后会被删除。
   brokerRole=ASYNC_MASTER  # 设置 Broker 的角色。`ASYNC_MASTER` 表示该 Broker 
为异步主节点,所有写操作都会异步地提交到磁盘。
   # 如果是 `SYNC_MASTER`,则表示同步主节点,会等待所有数据写入磁盘后才返回成功;如果是 `SLAVE`,表示从节点。
   flushDiskType=ASYNC_FLUSH  # 设置刷盘的方式。`ASYNC_FLUSH` 
表示异步刷盘,写数据时不等待磁盘刷写完成后再返回,性能更好,但可能存在数据丢失风险。
   # 另外一个选项是 `SYNC_FLUSH`,表示同步刷盘,数据写入时会等待磁盘刷写完成,保证数据可靠性,但性能较差。
   
   # 网络配置
   listenPort=10911  # 设置 Broker 监听的端口号,客户端和其他 Broker 会通过此端口与该 Broker 进行通信。
   # brokerIP1=100.72.47.219  # 设置 Broker 对外暴露的 IP 地址。客户端和其他 Broker 会通过这个 IP 
地址来访问此 Broker。
   # 设置 Broker 对外暴露的 IP 地址。客户端和其他 Broker 会通过这个 IP 地址来访问此 Broker。
   brokerIP1=broker1
   # 这个地址一般设置为宿主机的 IP 地址或者外部可访问的地址。确保在多个 Broker 之间互相访问时能够正常连接。
   # namesrvAddr=100.72.47.219:9876  # 设置 NameServer 的地址。NameServer 是 RocketMQ 
的注册中心,Broker 会注册到 NameServer 上,客户端通过它来找到 Broker。
   namesrvAddr=namesrv1:9876
   # 设置 NameServer 的地址。NameServer 是 RocketMQ 的注册中心,Broker 会注册到 NameServer 
上,客户端通过它来找到 Broker。
   # `100.72.47.219:9876` 表示 NameServer 的 IP 地址和端口号。这里的 IP 地址应为外部可访问的地址,确保其他 
Broker 和客户端能够访问到 NameServer。
   
   ```
   
   
   ### What Did You Expect to See?
   
   
日志和dashboard不应该乱码,-Dfile.encoding=UTF-8/LANG=en_US.UTF-8/LC_ALL=en_US.UTF-8都设置了utf-8字符集
   
   ### What Did You See Instead?
   
   
日志和dashboard不应该乱码,-Dfile.encoding=UTF-8/LANG=en_US.UTF-8/LC_ALL=en_US.UTF-8都设置了utf-8字符集
   
   ### Additional Context
   
   _No response_


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to