Goldrush has the concept of `all' and `any', all requires each meta data item being traced to be present:
Currently only all is implemented, because running lager:trace again will basically equate to an any..  
ie... > lager:trace(lager_console_backend, [{requestid, '>', 8}, {foo, bar}])
Means only lager:info([{requestid, 9}, {foo, bar}], "hello world") will match, and not 
> lager:info([{foo, bar}], "hello world"), or lager:info([{requestid, 10}], "hello world"),
this runs through glc:all(trace_acc(Query)) when it is a List, it's generated output is a tuple..
To match both (any) you would run trace twice..
ie...> lager:trace(lager_console_backend, [{requestid, '>', 8}])
and> lager:trace(lager_console_backend, [{foo, bar}])

lager:status() will reflect the difference.. 
I've gone ahead and added these cases to the test to demonstrate this feature..