22 июл. 2013 г.

NXlog: logrotate.

Дошли руки описать простой logrotate-механизм для NXLog, настройка которого была описана несколько раньше. Выглядит это  примерно так:

 <Extension logrotate>  
      Module     xm_fileop  
      <Schedule>  
           When     @daily  
           Exec     file_cycle('C:\nxlog\FloorSwitches\172.21.80.101.log', 14);  
           Exec     file_cycle('C:\nxlog\FloorSwitches\172.21.80.141.log', 14);            
           Exec     file_cycle('C:\nxlog\BladeAMM\172.21.81.20.log', 14);  
           Exec     file_cycle('C:\nxlog\BladeSwitches\172.21.80.161', 14);  
           Exec     file_cycle('C:\nxlog\de1s\10.118.3.153.log', 7);  
           Exec     file_cycle('C:\nxlog\InetRouters\172.21.94.56.log', 30);  
           Exec      file_cycle('C:\nxlog\InetSwitches\172.21.80.109.log', 14);  
           Exec     file_cycle('C:\nxlog\InetSwitches\172.21.80.110.log', 14);  
           Exec     file_cycle('C:\nxlog\InetSwitches\172.21.80.149.log', 14);  
           Exec     file_cycle('C:\nxlog\InetSwitches\172.21.80.150.log', 14);  
                 </Schedule>  
 </Extension>  

К сожалению, не знаю, как автоматизировать добавление в этот модуль файлов для ротирования, поэтому приходится все необходимые файлы описывать вручную.
Пару слов о том, что тут сделано. Используется модуль расширения (Extension Module) xm_fileop, который добавляет нам процедуру file_cycle(). С ее помощью мы ротируем заданный в первом аргументе файл столько раз, сколько указано во втором аргументе.
Периодичность операции ротирования описывается директивой When (в примере - ежедневная ротация), некоторые периоды (например, 1 hour) задаются директивой Every (подробности - в документации).
Так как модули расширения не работают напрямую с поступающими log-данными, то в route они не включаются. Поэтому весь описанный выше блок следует поместить в начали или конце конфигурационного файла, после описания Input/Output-модулей и route-блока.
P.S.: наткнулся  на удобный конвертер xml-подобного кода в приемлемый для вставки в html-страницу.