Thread: Re: Отключить русский в сообщениях об ошибках и логах

Re: Отключить русский в сообщениях об ошибках и логах

From
eshkinkot@gmail.com (Сергей Бурладян)
Date:
"Dmitry E. Oboukhov" <unera@debian.org> writes:

> кроме эстетики еще там местами поломан юникод что не вставляет
Давайте найдём и исправим :)

> 2012-05-05 12:05:06 MSK ОТМЕТКА:  неожиданный обрыв соединения с клиентом
> 2012-05-05 22:17:03 MSK ????:  ?????? ???????? ??????????? ??-?? ????????
Если это та проблема, про которую я подумал, то для её исправления нужно выставить
локаль в окружении для запуска сервера:
$ grep LANG /etc/postgresql/9.1/main/environment 
LANG = 'ru_RU.UTF-8'

Проблема в том что есть сообщения которые выводятся postmaster'ом, то есть основным
процессом, а он не связан ни с одной базой и поэтому не делает setlocale для
lc_ctype и lc_collate, но при этом он устанавливает язык сообщений lc_messages указанный
в конфигурационном файле postgresql.conf.

Далее вступает в действие библиотека gettext, которая занимается переводом, и в том числе
переводит текст из кодировки lc_messages в кодировку текущей локали, с учётом типов символов
текущей локали (lc_ctype и lc_collate) которые остались у главного процесса пустыми
что эквивалентно локали "C". В результате из UTF-8 текста Вы видите в C локали вопросики,
потому что в кодировке Latin1 нет таких кириллических символов. Такие дела :)

> надо переключить сообщения об ошибках и логи на английский, другие
> установки не трогая. куда смотреть?

$ grep lc_messages /etc/postgresql/9.1/main/postgresql.conf 
lc_messages = 'ru_RU.UTF-8'                     # locale for system error message

-- 
С уважением, Сергей Бурладян

>> кроме эстетики еще там местами поломан юникод что не вставляет
> Давайте найдём и исправим :)

я могу багу запостить если такая еще не запощена. Только я не смотрел
еще в апстриме где багтрекер. а в Debian отправил багрепорт
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=671915

ну и соответственно либо дебиановские майнтенеры в апстрим
перенаправят, либо я, если те будут тормозить долго.

> Проблема в том что есть сообщения которые выводятся postmaster'ом, то есть основным
> процессом, а он не связан ни с одной базой и поэтому не делает setlocale для
> lc_ctype и lc_collate, но при этом он устанавливает язык сообщений lc_messages указанный
> в конфигурационном файле postgresql.conf.

> Далее вступает в действие библиотека gettext, которая занимается переводом, и в том числе
> переводит текст из кодировки lc_messages в кодировку текущей локали, с учётом типов символов
> текущей локали (lc_ctype и lc_collate) которые остались у главного процесса пустыми
> что эквивалентно локали "C". В результате из UTF-8 текста Вы видите в C локали вопросики,
> потому что в кодировке Latin1 нет таких кириллических символов. Такие дела :)

>> надо переключить сообщения об ошибках и логи на английский, другие
>> установки не трогая. куда смотреть?

> $ grep lc_messages /etc/postgresql/9.1/main/postgresql.conf
> lc_messages = 'ru_RU.UTF-8'                     # locale for system error message

поставил тут en_US. но и в консоли постгрисовой переключилось.
вот в консоли хорошо когда по русски матерится, а в логах плохо когда
вопросики. замкнутый круг
--

. ''`.                               Dmitry E. Oboukhov
: :’  :   email: unera@debian.org jabber://UNera@uvw.ru
`. `~’              GPGKey: 1024D / F8E26537 2006-11-21
  `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537

Attachment