Summary: | grep видит текстовый лог как двоичный файл | ||||||
---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Speccyfighter <zxwarior> | ||||
Component: | grep | Assignee: | placeholder <placeholder> | ||||
Status: | CLOSED NOTABUG | QA Contact: | qa-sisyphus | ||||
Severity: | normal | ||||||
Priority: | P3 | CC: | evg, glebfm, ldv, mike, placeholder | ||||
Version: | unstable | ||||||
Hardware: | all | ||||||
OS: | Linux | ||||||
Attachments: |
|
Предложение: Хорошо бы всё логгировать только на английском. (In reply to comment #0) > Из-за логгирования на русском, grep воспринимает текстовый лог как бинарный Не надо логгировать на русском. (In reply to comment #1) > Предложение: > Хорошо бы всё логгировать только на английском. Это точно предложение к grep'у? Насколько помнится, распознавание байтов как символов языка регулируется локалью. Просто установите нужную локаль и grep будет понимать русский. Что конечно не отменяет того, что не нужно протоколировать на национальных языках. Или локаль, или grep -a. (В ответ на комментарий №2) > (In reply to comment #0) > > Из-за логгирования на русском, grep воспринимает текстовый лог как бинарный > > Не надо логгировать на русском. Согласен. > (In reply to comment #1) > > Предложение: > > Хорошо бы всё логгировать только на английском. > > Это точно предложение к grep'у? Согласен: Надо перевешивать на pulseaudio и gdm2.20 В лог кириллицу gdm-binary выплёвывает: # grep -rHi . --text /var/log|grep --text '202ал' /var/log/daemons/warnings:May 2 14:14:00 comp gdm-binary[2089]: WARNING: gdm_slave_xioerror_handler: Фа�\202ал�\214на�\217 о�\210ибка X - �\237е�\200езап�\203�\201к :0 $ rpm -qf $(which gdm-binary) gdm2.20-2.20.8-alt10 С пульсаудией вместе, - из того же лога во вложении: /var/log/syslog/messages:May 2 13:44:44 comp pulseaudio[2282]: [pulseaudio] authkey.c: Failed to open cookie file '/home/user/.config/pulse/cookie': �\235е�\202 �\202акого �\204айла или ка�\202алога (В ответ на комментарий №3) > Насколько помнится, распознавание байтов как символов языка регулируется > локалью. Просто установите нужную локаль и grep будет понимать русский. Не будет :) Оно уже в логе. Текстовый вид: �\202акого hex-код: D1 5C 32 30 32 D0 B0 D0 BA D0 BE D0 B3 D0 BE Кириллические символы двухбайтные. В слове: такого (или Т ?) первый байт первого символа - D1 Вместо второго байта, последовательность байт: 5C 32 30 32 \202 > Что конечно не отменяет того, что не нужно протоколировать на национальных > языках. :) А это да. (В ответ на комментарий №4) > Или локаль, или grep -a. Так и удалось рекурсивно грепнуть. (В ответ на комментарий №5)
> (В ответ на комментарий №2)
> > (In reply to comment #0)
> > ...
>
> > (In reply to comment #1)
> > > Предложение:
> > > Хорошо бы всё логгировать только на английском.
> >
> > Это точно предложение к grep'у?
>
> Согласен:
> Надо перевешивать на pulseaudio и gdm2.20
>
> В лог кириллицу gdm-binary выплёвывает:
>
> # grep -rHi . --text /var/log|grep --text '202ал'
> /var/log/daemons/warnings:May 2 14:14:00 comp gdm-binary[2089]: WARNING:
> gdm_slave_xioerror_handler: Фа�\202ал�\214на�\217 о�\210ибка X -
> �\237е�\200езап�\203�\201к :0
>
> $ rpm -qf $(which gdm-binary)
> gdm2.20-2.20.8-alt10
>
> С пульсаудией вместе, - из того же лога во вложении:
>
> /var/log/syslog/messages:May 2 13:44:44 comp pulseaudio[2282]: [pulseaudio]
> authkey.c: Failed to open cookie file '/home/user/.config/pulse/cookie':
> �\235е�\202 �\202акого �\204айла или ка�\202алога
Сейчас в системе alsa, а не pulseaudio, поэтому не соображу, могу только догадываться, что для пульсаудии вешать багу надо на пакет pulseaudio-daemon.
Посмотрел на то что отрепортил, как бы со стороны: https://forum.altlinux.org/index.php?topic=36322.msg292502#msg292502 |
Created attachment 6791 [details] Кириллические строки в логах /var/log/ Доброго времени суток! Из-за логгирования на русском, grep воспринимает текстовый лог как бинарный # grep -rHi . /var/log|grep 'Двоичный файл'|grep 'messages\|warnings' Двоичный файл /var/log/daemons/warnings совпадает Двоичный файл /var/log/syslog/messages совпадает Двоичный файл /var/log/user/warnings совпадает Причина кроется вот в чём: если приложение выбрасывает в лог сообщение на русском, то в словах вместо некоторых кириллических символов отображается не символ, а его код. И если лог содержит такие сообщения, то grep воспринимает лог как бинарный файл. Опция --text для grep, поможет отобразить текстовый лог, но кириллические строки либо плохо читаемы, либо нечитабельны совсем. Эти логи не учитывались и были отброшены сразу как бинарные: # file /var/log/{sa/sa06,wtmp,lastlog} /var/log/sa/sa06: data /var/log/wtmp: data /var/log/lastlog: data /var/log/sa* - через sar /var/log/wtmp - utmpdump или last /var/log/lastlog - lastlog Во вложении grep-нутые кириллические строки из логов, - так как они отображаются при просмотре.