rsyslog 출력의 잘못된 인코딩 모듈 (load = “mmutf8fix”)

도커 컨테이너에서 rsyslog 서비스를 실행하고 있습니다.

구성 ( rsyslog.conf )은 다음과 같습니다.

module (load = “imuxsock”) # 로컬 시스템 로깅 지원 (예 : 로거 명령을 통해)

module (load = “imudp”) # UDP 리스너 지원 모듈 (load = “imtcp”)

모듈 (load = “mmutf8fix”)

action (type = “mmutf8fix”)

LOCAL1. * action (type = “omfile”file = “/ var / log / my.log”)

클라이언트 프로그램은 로그 백을 사용하여 로컬 파일 및 원격 rsyslog 서비스 모두에 로그를 쓰는 Java 프로그램입니다.

로컬 로그 파일은 인코딩이 UTF-8 인 비 ASCII 문자와 유사합니다.

그러나 rsyslog의 출력 파일은 UTF-8 이 아닙니다 . 물론 ASCII가 아닌 문자는 올바르게 표시 할 수 없습니다.

sys rsyslog git 🙁 마스터) ✗ 파일 /volume/disk/logs/svt/my.log

/volume/disk/logs/svt/my.log : 매우 긴 줄이있는 ASCII 텍스트

출력을 UTF-8로 쓰도록 rsyslog를 구성하는 방법이 궁금합니다 .Google을 검색 한 후 확실한 해결책은 없습니다.



답변

나는 그것을 해결했다.

문제는 컨테이너의 기본 로케일이 UTF-8 이 아니라는 것 입니다. 내가 사용하고 고산 위해 rsyslog 컨테이너의 OS로 리눅스를. 마지막으로 Dockerfile인코딩 문제를 해결하기 위해 아래 환경 선언을 추가 하십시오.

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