Вчера чуть не родил. Всего-то надо было просто по 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