16.04.2012 11:19
OlegON
 
Вчера чуть не родил. Всего-то надо было просто по regexp выкладывать только часть сообщений, получаемых с железки. Казалось бы - простейшая задача. НО. Оказалось, что в современных версиях syslog строка сообщения делится на несколько частей, HOST, PROGRAM, MESSAGE (не помню весь список). Это и необходимо учитывать. А с железки строки приходят бесхитростные, чем мне просто мозг вырвали угадыванием, где тут какая часть (а особенно тем, что эти части вообще существуют), т.е. я всегда использовал значение value("MESSAGE") и обламывался, если сообщение было вида Calling number, поскольку Calling относилось вовсе не к MESSAGE. В общем сумбурно, но вот пример.
Код:
filter phone { match("Calling.*" value ("PROGRAM")) or match("Sess.*" value ("PROGRAM")) or match("Connected.*" value ("MESSAGE")) or match(".*number=.*" value ("MESSAGE")); };
если кто-то знает, как match натравливать на всю строку целиком или по каким параметрам строка делится - прошу сообщить... Версия syslog 3.2
16.04.2012 13:55
OlegON
 
Накопал, для всей строки целиком используется "MSG"

UPD: наврал... судя по доке, теперь только MSGHDR и MSG, общего нет. Первое включает PROGRAM и PID, второе - сообщение. Парсеры всяческие - только по MSG. В общем, пока забил, но интересно было бы узнать правильное решение.
19.04.2012 16:33
OlegON
 
Решается через flags(no-parse) в источнике.
Часовой пояс GMT +3, время: 05:20.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.