codificação incorreta da saída do rsyslog

0

Estou executando um serviço rsyslog em um contêiner docker.

Sua configuração ( rsyslog.conf ) se parece com abaixo,

module(load="imuxsock") # local system logging support (e.g. via logger command)

module(load="imudp") # UDP listener support module(load="imtcp")

module(load="mmutf8fix")

action(type="mmutf8fix")

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

O programa cliente é um programa Java que está usando o logback para gravar o log no arquivo local e no serviço rsyslog remoto.

O arquivo de log local se parece com caracteres não-ascii, cuja codificação é UTF-8.

No entanto, o arquivo de saída do rsyslog é NOT UTF-8. Claro que os caracteres não-ascii não podem ser mostrados corretamente.

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

/volume/disk/logs/svt/my.log: ASCII text, with very long lines

Eu estou querendo saber como configurar o rsyslog para escrever saída como UTF-8, não há solução óbvia depois de pesquisar no Google.

    
por Kane 30.08.2016 / 10:47

1 resposta

0

Eu resolvi isso.

O problema é que o código do idioma padrão do contêiner não é UTF-8 . Estou usando linux alpine como o sistema operacional do container rsyslog. Por fim, adicione abaixo as declarações de ambiente em Dockerfile para corrigir o problema de codificação.

ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US.UTF-8
    
por 01.09.2016 / 11:26