rsyslog 输出的编码不正确

rsyslog 输出的编码不正确

我正在 docker 容器中运行 rsyslog 服务。

它的配置(rsyslog.conf)如下所示,

module(load="imuxsock") # 本地系统日志记录支持(例如通过 logger 命令)

module(load="imudp") # UDP 监听支持 module(load="imtcp")

模块(加载=“mmutf8fix”)

动作(类型=“mmutf8fix”)

LOCAL1.* 操作(类型=“omfile”文件=“/var/log/my.log”)

客户端程序是使用 logback 将日志写入本地文件和远程 rsyslog 服务的 Java 程序。

本地日志文件看起来像非ascii字符,其编码为UTF-8。

然而 rsyslog 的输出文件是不是UTF-8。当然非ascii字符就无法正常显示。

➜ rsyslog git:(master) ✗ 文件 /volume/disk/logs/svt/my.log

/volume/disk/logs/svt/my.log:ASCII 文本,行很长

我想知道如何配置 rsyslog 以将输出写为 UTF-8,在 Google 搜索后没有找到明显的解决方案。

答案1

我解决了。

问题是容器的默认语言环境不是UTF-8。 我在用着高山linux 作为 rsyslog 容器的操作系统。最后添加以下环境声明以Dockerfile修复编码问题。

ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US.UTF-8

相关内容