如何在 logstash 文件输入路径中包含正则表达式

How to include regular expression in logstash file input path

我正在使用 logstash 将 tomcat 访问日志转换为 json 格式。访问日志名称格式如下

abcd_access_log.2016-03-15.log
efgh_access_log.2016-02-16.log

输入过滤器是:

input { 
    file {
        path => "C:\tools\apache-tomcat-8.0.32\logs\*_access_log.*.log"
        start_position => beginning
    } 
}

它没有显示使用正则表达式的日志。我应该在这里使用什么正则表达式来 select 只有这些文件?

简单快捷的方法

如果您的 log 文件总是在 logs\ 之后,您可以使用以下正则表达式:

logs\(.*?\.log)

捕获所有内容 .*?,然后是 logs\(请注意正则表达式中的双 \)。此外,您的文件以 .log 结尾,所以不要忘记用 \.log 转义点。

详细说明在 Regex101.


防弹又慢

如果缺少关键字符 logs\,您可以使用以下正则表达式,它捕获路径的最后一部分,使用否定 lookahead:

\((?:.(?!\))+\.log)

再次详细说明:Regex101