Python中supervisor中文日志乱码问题如何解决?


Python中supervisor中文日志乱码问题如何解决?
15 回复

这个问题通常是因为Supervisor的默认编码设置与你的应用日志编码不匹配导致的。

核心解决方案是修改Supervisor配置文件的编码设置:

  1. 找到你的Supervisor配置文件(通常是 /etc/supervisor/supervisord.conf/etc/supervisord.conf)。

  2. [supervisord] 部分添加或修改以下两行:

    [supervisord]
    environment=LANG="zh_CN.UTF-8", LC_ALL="zh_CN.UTF-8"
    logfile=/var/log/supervisor/supervisord.log
    logfile_maxbytes=50MB
    logfile_backups=10
    loglevel=info
    pidfile=/var/run/supervisord.pid
    childlogdir=/var/log/supervisor
    

    关键点是 environment 这一行,它设置了子进程的环境变量,确保使用UTF-8编码。

  3. 如果你是通过 supervisorctl 查看日志,确保你的终端或SSH客户端也使用UTF-8编码(比如设置 LANG=zh_CN.UTF-8)。

  4. 重启Supervisor服务使配置生效:

    sudo supervisorctl reload
    # 或
    sudo systemctl restart supervisord
    

如果问题依然存在,检查你的Python应用本身是否正确地输出了UTF-8编码的日志。 可以在Python脚本开头显式设置编码:

import sys
import logging

# 强制标准输出使用UTF-8
sys.stdout.reconfigure(encoding='utf-8')

logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[logging.StreamHandler(sys.stdout)]
)

总结建议:确保Supervisor环境变量和Python应用编码统一为UTF-8。

supervisor 日志只是捕获你的控制台 info,乱码应该跟你的项目有关把

可能是 linux 的原因,要打语言包补丁

talf -f 和 supervisorctl tail 都是正常的

talf -f 和 supervisorctl tail 都是正常的

你不用 supervisord 跑你的项目,控制台乱码吗

之前解决过, 它的 html 页面有问题, 编码是写死的, 我记得有一个更新修复了, 你可以去 github 看看, 或者用 pip 安装最新版

楼上真摸鱼,每个帖子都看到你

#7 2333 你被楼下逮到了

我每天都摸-------咸鱼, 最近脚气好像又犯了, 香菇蓝瘦…

#8 当你在凝视深渊的时候,深渊也正在凝视着你 兄弟, 你不摸鱼怎么知道我摸鱼.

解决了,用 pip 版本就挺好

怎么解决的… 他们的 web ui 有问题, 在 taillog 的页面刷新一次中文可以正常, 所以我用了 chrome 插件强制指定了这个站点 utf8 编码, 但还是只能 tail 的, 看历史 log 的就不行

web 端乱码不能忍受,刚好需要,看到该问题~

centos7,yum 安装的原来的版本是 3.1.4,现可以升级到 3.4.0 版本( yum 源最新版本),已经解决此问题,已不需 pip (但 pip 安装新版本也同样可以解决)

bash<br>Running transaction<br> 正在更新 : supervisor-3.4.0-1.el7.noarch 1/2<br> 清理 : supervisor-3.1.4-1.el7.noarch 2/2<br> 验证中 : supervisor-3.4.0-1.el7.noarch 1/2<br> 验证中 : supervisor-3.1.4-1.el7.noarch 2/2<br><br>更新完毕:<br> supervisor.noarch 0:3.4.0-1.el7<br><br>完毕!<br>

回到顶部