# How to use conditional statement in Filter

**URL:** <https://discuss.elastic.co/t/how-to-use-conditional-statement-in-filter/2443>\
**Category:** Logstash\
**Created:** [June 11, 2015, 10:26am UTC](https://discuss.elastic.co/t/how-to-use-conditional-statement-in-filter/2443 "2015-06-11T10:26:32Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ankit\_Pradhan](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ankit_pradhan/32/44412_2.png) [@Ankit\_Pradhan](https://discuss.elastic.co/u/Ankit_Pradhan)\
**Post date:** [June 11, 2015, 10:26am UTC](https://discuss.elastic.co/t/how-to-use-conditional-statement-in-filter/2443/1 "2015-06-11T10:26:32Z")

</div>

How can i query on the message for a particular String and then add a new Field in the output?  
I tried below but seems like the message as a field doesn't work ... it must be the wrong way i am using the syntax ... help please.

input {  
file {  
path =\> "/Users/ankitpradhan/Downloads/logs/checking3"  
start\_position =\> "beginning"  
}  
}

filter {  
grok {  
match =\> ["message", "[%{DATESTAMP} %{WORD:timezone}] %{WORD:componentID} %{WORD:componentName} %{WORD} %{GREEDYDATA:eventDescription}"]  
add\_field =\> ["componentStatusDateChangeTime", "%{eventTime} %{timezone}"]  
}  
if [%{eventDescription}] =~ "error" {  
add\_field =\> ["componentStatus", "ERROR"]  
} else if [%{eventDescription}] =~ "warn" {  
add\_field =\> ["componentStatus", "WARNING"]  
}  
}

output {  
stdout { codec =\> rubydebug }

#if "\_grokparsefailure" not in [tags] {  
# elasticsearch { }

# }

}

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [June 11, 2015, 12:05pm UTC](https://discuss.elastic.co/t/how-to-use-conditional-statement-in-filter/2443/2 "2015-06-11T12:05:59Z")

</div>

```
if [eventDescription] =~ /error/ {
  ...
}
```

---

<div class="post-metadata">

**Author:** ![Ankit\_Pradhan](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ankit_pradhan/32/44412_2.png) [@Ankit\_Pradhan](https://discuss.elastic.co/u/Ankit_Pradhan)\
**Post date:** [June 11, 2015, 12:38pm UTC](https://discuss.elastic.co/t/how-to-use-conditional-statement-in-filter/2443/3 "2015-06-11T12:38:34Z")

</div>

Thanks much ...

One more question ... do you know how I can read multi lines as one line in Logstash ...

Input is like this:  
[7/2/14 9:25:51:070 CEST] 00000061 OgnlValueStac W com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn Error setting value  
ognl.NoSuchPropertyException: nl.ing.eom.poi.dto.WorkItemReq.sortCode  
at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:132)  
at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:28)  
at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:1656)  
at ognl.ASTProperty.setValueBody(ASTProperty.java:101)  
[7/2/14 9:25:54:651 CEST] 00000061 TextProviderH W com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn The first TextProvider in the ValueStack (nl.ing.eom.poi.action.InquireFileAction) could not locate the message resource with key ''

And I want to have the above as two messages only and not as many lines as it appears.

---

<div class="post-metadata">

**Author:** ![Ankit\_Pradhan](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ankit_pradhan/32/44412_2.png) [@Ankit\_Pradhan](https://discuss.elastic.co/u/Ankit_Pradhan)\
**Post date:** [June 11, 2015, 12:47pm UTC](https://discuss.elastic.co/t/how-to-use-conditional-statement-in-filter/2443/4 "2015-06-11T12:47:01Z")

</div>

multiline codec should do it ...

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [June 11, 2015, 2:17pm UTC](https://discuss.elastic.co/t/how-to-use-conditional-statement-in-filter/2443/5 "2015-06-11T14:17:08Z")

</div>

Yes, or the multiline filter.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2017, 5:37am UTC](https://discuss.elastic.co/t/how-to-use-conditional-statement-in-filter/2443/6 "2017-07-06T05:37:42Z")

</div>


