1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Совет Русский текст и консоль windows (1.7.2+)

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем Andrey96, 8 авг 2014.

  1. Автор темы
    Andrey96

    Andrey96 Активный участник

    Баллы:
    61
    Казалось бы, всё не сложнее, чем добавить виртуальной машине Java параметр -Dfile.encoding=CP866
    Да, это работает, но log4j подхватывает эту кодировку и использует её не только для вывода в консоль, но еще и для лог файлов. Для кого принципиально, чтобы они оставались в UTF-8, делаем следующее:
    Редактируем log4j2.xml в jar файле сервера.
    Находим нужный Appender:
    <RollingRandomAccessFile name="File" ...>
    <PatternLayout pattern="[%d{HH:mm:ss}] [%t/%level]: %msg%n" />
    Нас интересует вторая строка. В интернете об этом не сказано, да и в документации явно не написано, что PatternLayout наследует поле charset от одного абстрактного класса (копался в исходниках).
    Воспользуемся этим:
    <RollingRandomAccessFile name="File" ...>
    <PatternLayout pattern="[%d{HH:mm:ss}] [%t/%level]: %msg%n" charset="UTF-8"/>
    Всё, теперь наш сервер разговаривает по-русски и принимает русские команды, а лог файлы при этом пишутся в UTF-8. То, что надо.
    Кстати, можно вообще обойтись без -Dfile.encoding и установить кодировку CP866 Аппендеру Console, но тогда сервер не будет воспринимать русский текст во введенных командах, а будет только отображать его в консоли. Кому-то будет достаточно и этого.
     

Поделиться этой страницей