【问题标题】:nxlog process logs files based on filenamenxlog 进程根据文件名记录文件
【发布时间】:2016-03-18 14:12:54
【问题描述】:

我在 C:\Logs 中有很多日志文件。

我在每个单独的站点文件夹(W3SVCXX,其中 XX 是来自 IIS 的站点 id)中都有 IIS 日志,但在同一个 C:\Logs\ 文件夹中,我还有来自这些相同网站的其他日志文件,但通过 Log4Net 作为在网站上运行的应用程序。

我当前的 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.log。

有什么想法吗?

谢谢,

迈克尔

【问题讨论】:

    标签: nxlog


    【解决方案1】:

    如果您需要处理所有日志,那么您可以只使用一个输入实例并根据文件名进行不同的解析,而不是定义两个输入实例:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多