This is why I asked in my earlier mail if it's possible to set up the mongo driver to log all vars in a message or a subset of vars in a message. I was hoping it'd be possible for the schema to change somewhat dynamically based on what's present in the messages.
You can set it up to log a set of vars, and it will only actually insert the non-empty values. Say, if you have something like this: destination d_mongo { mongodb( keys("host", "program", "pid", "message") values("$HOST", "$PROGRAM", "$PID", "$MSGONLY") ); }; If a message does not contain a PID, then that will not be added to the document, only the rest. Thus, if you set a maximum of vars, that'll do just what you need, and only add those that do have a value. To the best of my knowledge it is not possible to log all available variables (that would be bad too, since there are overlapping macros), but you can set up a selected maximum set, and the driver will Do The Right Thing, and only store those parts of it, that are set.