Как я могу переформатировать вывод журнала RFC5424, чтобы его было легче читать? - PullRequest
0 голосов
/ 28 июня 2018

Формат регистрации сообщений RFC5424 имеет смысл, но его трудно прочитать на лету.

Есть идеи о том, как сделать это проще для чтения?

Ответы [ 3 ]

0 голосов
/ 28 июня 2018

Вы можете использовать модуль JSON, чтобы декодировать его в собственную структуру Perl и просматривать его с помощью Data::Dumper

perl -MJSON -MData::Dumper -0 -ne 'print Dumper decode_json($_)' path/to/log/file

Опционально, установите отступ Dumper на 1 для лучшего просмотра: $Data::Dumper::Indent = 1

0 голосов
/ 28 июня 2018

logfmt

Для этого нет CPAN-модуля, но вы можете аппроксимировать его кодом:

journalctl -o json | perl -MJSON -lne'
    my $j = decode_json $_;
    my $out = "";
    for my $k (sort keys %$j) {
        my $v = $j->{$k};
        $v = qq("$v") if $v =~ /\s/;
        $out .= "$k=$v ";
    };
    print $out;
'

Потребляйте с colout или lnav для большего удобства использования.

0 голосов
/ 28 июня 2018

Я просто хотел поместить это куда-нибудь на случай, если кто-нибудь найдет для него применение.

Работая в adonis.js, я обнаружил, что класс Logger очень полезен, но его вывод трудно читать на лету.

Я немного покопался и не смог найти разумного решения, поэтому приложил немного усилий, чтобы достичь этого результата:

tail path/to/log/file -f | perl -pe 's/^.*?"level":"([^"]*)".*?"message":"((\\"|[^"])*)".*?"timestamp":"([^"]*)".*?$/\e[0;36m|\e[0m\e[1;30m $1: $4\n\r\e[0m\e[0;36m|\e[0m $2\n\r/'

Это превратит типичный журнал записи в файле журнала в формате RFC5424:

enter image description here

К этому:

enter image description here

Надеюсь, это кому-нибудь пригодится!

...