Здравствуйте NetXMS Users - Russian!
30 августа 2006 г. вы писали.
AK> LogScan.FindString() принимает два параметра: имя файла и подстроку для
AK> поиска. Если подстрока найдена, то этот вызов вернет полную строку из
AK> файла, в которой найдена подстрока и завершится. Текущая позиция в файле
AK> сохраняется между запросами, если размер файла меньще позиции - считаем,
AK> что это был log rotate и начинаем с начала файла.
У меня довольно давно реализован подобный log-whatcher на bash-е.
За последние пару лет наблюдений случаются моменты:
а) размер файла не изменился, но содержимое изменилось. (к примеру
string1 изменился на string2)
б) лог отротейтился и за время между чтением его из DCI - вырос, по
сравнению с доротейченным логом. т.е. в старом логе было 10 строчек,
потом, после ротейта он резко стал 15 строчек. Мы естественно обрабатываем
последние 5 строчек.
Вариант (а) можно вылечить чтением даты изменения файла и сравнения с
предыдущим значением.
По поводу варианта (б) можно только советовать смотреть с сторону
tail, который (с опцией -f) понимает, что файл отротейтился. Может
конечно постоянно заниматься чтением из файла, а серверу отдавать
информацию пачками. Сырцы не копал, может так уже и сделано? =)
>> LogScan.FindString на linux-агенте.
>> Какое предназначение этой функции?
----------------
С уважением.
Lobahin Ilya
Received on Fri Sep 15 2006 - 23:16:24 EEST
This archive was generated by hypermail 2.2.0 : Fri Sep 15 2006 - 23:17:51 EEST