2016-03-18 4 views
0

У меня есть много файлов журнала в C: \ Logs.nxlog обрабатывает файлы на основе имени файла

У меня есть журналы IIS в каждой отдельной папке сайта (W3SVCXX, где XX - идентификатор сайта из IIS), но внутри этой же папки C: \ Logs \ у меня есть другие файлы журналов с тех же сайтов, но они вошли в Log4Net как часть приложение, запущенное на веб-сайте.

Моего текущего NXLog Config:

<Input i_IISSITES> 
    Module im_file 
    File "C:\Logs\u_ex*" 
    SavePos TRUE 
    Recursive TRUE 
    InputType LineBased 
    Exec $Hostname = 'stg-01-iom'; 
    Exec if $raw_event =~ /^#/ drop(); \ 
     else        \ 
     {         \ 
      w3c->parse_csv();    \ 
      $SourceName = "IIS";   \ 
      $EventTime = parsedate($date + " " + $time); \ 
      $Message = to_json();   \ 
     } 
</Input> 
<Output o_PLAINTEXT> 
    Module  om_udp 
    Host  10.50.108.32 
    Port  5555  
</Output> 
<Route r_IIS> 
    Path i_IISSITES => o_PLAINTEXT 
</Route> 

Это отлично работает в настоящее время для журналов IIS, которые соответствуют имени файла U_ex *.

структура

Папка:

c:\Logs\ 

    - L009 
      - Dir1 
      - Dir2 
        - FileName.Log 
    - L008 
      - Dir3 
        - RandomFileName.Log 
    - L008 
    - W3SVC1 
      - u_ex1232.log 
    - W3SVC2 
    - W3SVC3 

и т.д. и т.п ..

Теперь я могу быть специфичным для журналов IIS, так как имя файла u_ex *, но с моими файлами журналов других их можно назвать что-нибудь ,

Так что для моего другого ввода мне нужно уметь настраивать все .log, но не u_ex .log.

Любые идеи?

Спасибо,

Майкл

ответ

0

Если вам нужно обработать все журналы, то вместо определения двух входных экземпляров вы могли бы просто использовать один и разобрать по-разному в зависимости от имени файла:

<Exec> 
    if file_name() =~ /u_ex\d+\.log$/ 
    { 
    # parse as IIS 
    } 
    else 
    { 
    # parse as other 
    } 
</Exec> 
Смежные вопросы