我正在 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