Logs & GridQL
GridQL is a Lucene inspired syntax for filter Meya ledgers entries (aka logs). This powerful query language allows to you to examine your ledger entries and debug your Meya conversational apps.
meya.text.event.say text:hi
This would filter logs for all SayEvent
entries (or it's subclasses) where the text exactly matches "hi". The "bare" field is assumed to be a type
search. You can see the list of types within this API reference.
Logs usage
The most common usage for GridQL is within the Logs UI within the Meya Console.

GridQL in logs
Indexed searches
The following searches are indexed to return immediate log results:
- Date range / e.g.
["2020-10-05 17:20:00.000-04:00" TO "2020-10-05 17:25:00.000-04:00"]
- Milliseconds timestamp range / e.g.
[1601932800000 TO 1601933100000]
- Trace ID / e.g.
trace_id:tr-39ccfbe2bc65414a901648323c210216
- Base entry type / e.g.
meya.bot.entry
- Bot ID + thread ID for bot entries / e.g.
meya.bot.entry bot_id:bot.default thread_id:t-dfe7fbf4286940baa622ff51cab79561
- Thread ID for events / e.g.
meya.event.entry thread_id:t-dfe7fbf4286940baa622ff51cab79561
- Request ID for HTTP entries / e.g.
meya.http.entry request_id:r-e7874c5e137ab8860571cb4e7beb10edfb558670
- Thread ID for thread entries / e.g.
meya.thread.entry thread_id:t-a7bf49990231475e907e6abe5c14db6c
- User ID for user entries / e.g.
meya.user.entry user_id:u-7ed306b4a79b459c85991be944f8eef9
- Request ID for WS entries / e.g.
meya.ws.entry request_id:r-9822afa989fb4f4a96130c5ea652567e
Runtime usage
GridQL can also be used within custom Grid element code. This can be useful when creating custom integration or log elements.
from meya.core.type_registry import TypeRegistry
from meya.gridql.parser import GridQL
from meya.text.event.say import SayEvent
entry = SayEvent(text="hi")
query = "meya.event.entry.interactive AND NOT (text:*fizz* OR text:*buzz*)"
gridql = GridQL.create(
query, type_registry=TypeRegistry.current.get()
)
if gridql.match_entry(entry):
print("It matched!")
else:
print("No match :(")
When using
Cheatsheet
All "interactive" events
meya.event.entry.interactive
For a specific trace
trace_id:tr-39ccfbe2bc65414a901648323c210216
Time range search
["2020-10-05 17:20:00.000-04:00" TO "2020-10-05 17:25:00.000-04:00"]
All incoming web requests
meya.http.entry.request direction:rx
Outgoing web requests for a specific API
meya.http.entry.request direction:tx url:*dialogflow*
All bot lifecycle entries (triggers, flows, component)
meya.bot.entry
Boolean expressions w/ wildcards
meya.event.entry.interactive AND NOT (text:*fizz* OR text:*buzz*)
Updated over 2 years ago