# Convert the code in Logstash

**URL:** <https://discuss.elastic.co/t/convert-the-code-in-logstash/375284>\
**Category:** Logstash\
**Created:** [March 2, 2025, 1:24pm UTC](https://discuss.elastic.co/t/convert-the-code-in-logstash/375284 "2025-03-02T13:24:13Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Gowtham1](https://avatars.discourse-cdn.com/v4/letter/g/4da419/32.png) [@Gowtham1](https://discuss.elastic.co/u/Gowtham1)\
**Post date:** [March 2, 2025, 1:24pm UTC](https://discuss.elastic.co/t/convert-the-code-in-logstash/375284/1 "2025-03-02T13:24:13Z")

</div>

Hi,

I'm to the Logstash, How can I convert the below codes in Logstash?

Code 1:

def categorize\_rssi(rssi):  
if rssi \<= -30 and rssi \> -50:  
return "Excellent Signal"  
elif rssi \<= -50 and rssi \> -60:  
return "Good Signal"  
elif rssi \<= -60 and rssi \> -70:  
return "Fair Signal"  
elif rssi \<= -70 and rssi \> -80:  
return "Poor Signal"  
elif rssi \<= -80 and rssi \> -90:  
return "Very Poor Signal"  
elif rssi \< -90:  
return "No Signal"  
else:  
return None

Code 2:

def categorize\_snr(snr):  
if snr \>= 40:  
return "Excellent"  
elif 40 \> snr \>= 25:  
return "Good"  
elif 25 \> snr \>= 15:  
return "Fair"  
elif 15 \> snr \>= 10:  
return "Poor"  
else:  
return "Very Poor"

Regards  
Gowtham S

---

<div class="post-metadata">

**Author:** ![Badger](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/badger/32/25190_2.png) [@Badger](https://discuss.elastic.co/u/Badger)\
**Post date:** [March 2, 2025, 4:00pm UTC](https://discuss.elastic.co/t/convert-the-code-in-logstash/375284/2 "2025-03-02T16:00:31Z")

</div>

You could do this with a ranges filter, which is not bundled, so you will need to install it. Otherwise do it in a ruby filter. The ranges filter uses the ruby [.between?](https://ruby-doc.org/3.4.1/Comparable.html#method-i-between-3F) operator, so the ends of the range are included in it.

Note that your if-else cascade does not handle the value -90.

```
    range {
        ranges => [
            "someField", -49, -30, "field:category:Excellent signal",
            "someField", -59, -50, "field:category:Good signal",
            "someField", -69, -60, "field:category:Fair signal",
            "someField", -79, -70, "field:category:Poor signal",
            "someField", -89, -80, "field:category:Very poor signal",
            "someField", -2147483647, -91, "field:category:no signal"
        ]
    }
    if ![category] { mutate { add_field => { "category" => "None" } } }

```

---

<div class="post-metadata">

**Author:** ![Gowtham1](https://avatars.discourse-cdn.com/v4/letter/g/4da419/32.png) [@Gowtham1](https://discuss.elastic.co/u/Gowtham1)\
**Post date:** [March 3, 2025, 6:17pm UTC](https://discuss.elastic.co/t/convert-the-code-in-logstash/375284/3 "2025-03-03T18:17:23Z")

</div>

Thanks for the response. Let me check and update the status.

---

<div class="post-metadata">

**Author:** ![Gowtham1](https://avatars.discourse-cdn.com/v4/letter/g/4da419/32.png) [@Gowtham1](https://discuss.elastic.co/u/Gowtham1)\
**Post date:** [March 5, 2025, 11:03am UTC](https://discuss.elastic.co/t/convert-the-code-in-logstash/375284/4 "2025-03-05T11:03:40Z")

</div>

> [@Badger](#):
>
> ```auto
> }
> 
> ```

I have done the changes in Logstash. Please see the details below and let us know in case of any modifications in the config.

mutate  
{  
add\_field =\> { "[wirelesslancontroller][ClientSNRStatus]" =\> "%{ [wirelesslancontroller][ClientSNR]}" }  
}  
range  
{  
ranges =\> [  
"[wirelesslancontroller][ClientSNR]" , 0, 10, "field:"[wirelesslancontroller][ClientSNRStatus]":Unusable" ],  
"[wirelesslancontroller][ClientSNR]" , 11, 15, "field:"[wirelesslancontroller][ClientSNRStatus]":Poor",  
"[wirelesslancontroller][ClientSNR]" , 16, 25, "field:"[wirelesslancontroller][ClientSNRStatus]":Fair",  
"[wirelesslancontroller][ClientSNR]" , 26, 40, "field:"[wirelesslancontroller][ClientSNRStatus]":Good",  
"[wirelesslancontroller][ClientSNR]" , 41, 100, "field:"[wirelesslancontroller][ClientSNRStatus]":Excellent",  
]  
}
