Я запускаю службу rsyslog в контейнере Docker.

Его конфигурация (rsyslog.conf) выглядит следующим образом:

module(load = "imuxsock") # поддержка регистрации в локальной системе (например, с помощью команды logger)

module(load = "imudp") # Модуль поддержки прослушивателя UDP (load = "imtcp")

Модуль (нагрузка = "mmutf8fix")

Действие (тип = "mmutf8fix")

LOCAL1. * Action (type = "omfile" file = "/var/log/my.log")

Клиентская программа - это Java-программа, которая использует logback для записи журнала как в локальный файл, так и в удаленную службу rsyslog.

Локальный файл журнала выглядит как символы не ascii, кодировка которых - UTF-8.

Однако выходной файл rsyslog НЕ UTF-8. Конечно, символы не-ascii не могут быть показаны правильно.

Rs rsyslog git:(master) ✗ файл /volume/disk/logs/svt/my.log

/volume/disk/logs/svt/my.log: текст ASCII с очень длинными строками

Мне интересно, как настроить rsyslog для записи вывода в формате UTF-8, нет очевидного решения после поиска в Google.

1 ответ1

0

Я решил это.

Проблема заключается в том, что языковой стандарт контейнера по умолчанию не UTF-8. Я использую альпийской Linux как ОС Rsyslog контейнера. Наконец, добавьте нижеприведенные объявления среды в Dockerfile чтобы исправить проблему с кодировкой.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .