2013-11-26 40 views
8

在我Logstash托运人我想筛选出线条注释以符号:删除日志行哈希字符

#This log row should be dropped. 
But one this should not. 

我能使用grep过滤器,但因为它是不鼓励(将要退役),我试图让grok过滤器来代替它。此过滤器不工作:

grok { 
    match => ["message", "^#.*"] 
    drop_if_match => true 
} 

我也尝试将正则表达式放在自定义模式文件中,但没有帮助。有任何想法吗?

回答

21

就更简单了,如果你有兴趣:

filter { 
    if ([message] =~ /^#/) { 
     drop{} 
    } 
} 

Logstash的最后几个版本已经把更多的重点放在分支逻辑directly in the config files。稍微习惯一下,但是一旦你做了,就会很方便。

+1

你不需要额外的()if条件。如果[message =〜“^#”] {现在已经足够了。 – jmcollin92

2

正确答案是drop_if_match=>true(Logstash v1.2.2)中存在一个错误。使用此类型的解决办法的:

grok { 
    ... 
    add_tag => ["some_comment"] 
} 
if "some_comment" in [tags] { 
    drop {} 
} 
+0

add_tag语法不好。你必须使用:mutate {add_tag ....} – jmcollin92