2016-03-18 95 views
0

我在C:\ Logs中有很多日誌文件。我有IIS日誌在每個單獨的站點文件夾(W3SVCXX,其中XX是IIS的站點ID),但在同一個C:\ Logs \文件夾內我有其他日誌文件從這些相同的網站,但通過Log4Net登錄作爲在網站上運行的應用程序。nxlog基於文件名的進程日誌文件

我目前NXLog配置:

<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> 

這工作完全當前爲匹配文件名U_ex *哪個IIS日誌。

文件夾結構:

c:\Logs\ 

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

等等等等。

現在我能特異性地針對IIS日誌,因爲文件名是u_ex *,但與我的其他日誌文件,可以把它們叫什麼。

所以對於我的其他輸入,我需要能夠針對所有.LOG但不u_ex日誌。

任何想法?

感謝,

邁克爾

回答

0

如果你需要處理所有日誌,然後而不是定義兩個輸入情況下,你可以只使用一個,並解析不同,這取決於文件名:

<Exec> 
    if file_name() =~ /u_ex\d+\.log$/ 
    { 
    # parse as IIS 
    } 
    else 
    { 
    # parse as other 
    } 
</Exec>