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