我试图读取像那样的日志文件:
199.72.81.55 - - [01/Jul/1995:00:00:01 -0400] "GET /history/apollo/ HTTP/1.0" 200 6245
unicomp6.unicomp.net - - [01/Jul/1995:00:00:06 -0400] "GET /shuttle/countdown/ HTTP/1.0" 200 3985
199.120.110.21 - - [01/Jul/1995:00:00:09 -0400] "GET /shuttle/missions/sts-73/mission-sts-73.html HTTP/1.0" 200 4085
burger.letters.com - - [01/Jul/1995:00:00:11 -0400] "GET /shuttle/countdown/liftoff.html HTTP/1.0" 304 0
199.120.110.21 - - [01/Jul/1995:00:00:11 -0400] "GET /shuttle/missions/sts-73/sts-73-patch-small.gif HTTP/1.0" 200 4179
我每次运行此练习时都会发送1000行,并且我使用的是splitText处理器,而在extractText处理器中我使用此正则表达式:
successCode -> ^[0-9A-Z\-a-z\.]* - - \[[0-9A-Za-z\/\:]* -[0-9]*\] \"[A-Z]* [0-9A-Za-z\/\.\- ]*\" ([0-9]*) [0-9]*
tiemStamp -> ^[0-9A-Z\-a-z\.]* - - \[([0-9A-Za-z\/\:]*) -[0-9]*\] \"[A-Z]* [0-9A-Za-z\/\.\- ]*\" [0-9]* [0-9]*
important -> ^([0-9A-Z\-a-z\.]*) - - \[[0-9A-Za-z\/\:]* -[0-9]*\] \"[A-Z]* [0-9A-Za-z\/\.\- ]*\" [0-9]* [0-9]*
这可能是一个错误。当然这是我的问题。
然后,我尝试将不同的日志发送到不同的路由。如果successCode == 200,那么我试着将它放在route / user // success /%{tiemStamp} /上,但我的所有行都转到第三种方式:"无法匹配"
在RouteOnContent处理器上我尝试过:
successCode -> ${successCode:equals("200")}
successCode -> ${successCode:contains(2)}
successCode -> ${successCode:contains("2")}
有没有人使用" RouteOnContent"处理器?
答案 0 :(得分:3)
根据文档,=INDIRECT(VLOOKUP(A1;c_colors;2;FALSE))
处理器"根据FlowFile的内容评估一个或多个正则表达式。 将这些正则表达式的结果分配给FlowFile属性 [...]"
因此,您不应在下一步使用ExtractText
处理器,而应使用RouteOnContent
处理器。
(如果您停止RouteOnAttribute
处理器以便将消息保留在队列中,您可以看到流文件的内容。在流文件的" Attributes"选项卡中,您可以看到不同属性的值。我用你的正则表达式确认,我有successCode = 200。)
答案 1 :(得分:1)
基本上,您可以同时使用RouteOnAttribute
或RouteOnText
,但是每个参数都使用不同的参数。
如果选择使用ExtractText
,则会为每一行填充定义的属性(在SplitText
处理器拆分原始文件之后)。
现在,您有两个选择:
Extract Text
。每个处理器对FlowFile的路由方式不同: