Hi Gabor, I see that you have two mentions of user_ids in the template:
property(outname="user_ids" name="$!user_ids") property(outname="user_ids" name="$!mesg") Maybe that's why? I would normally expect just one instance of the same variable. My usual way of troubleshooting templates is to write the output to a file (using the same template). At least this way I would know if the problem is specific to my destination or to my template. Best regards, Radu -- Elasticsearch/OpenSearch & Solr Consulting, Production Support & Training Sematext Cloud - Full Stack Observability https://sematext.com/ <http://sematext.com/> On Tue, Jul 12, 2022 at 8:22 AM Gábor Takács via rsyslog < rsyslog@lists.adiscon.com> wrote: > Hello Guys, > > I'm facing a strange case. I send log messages to syslog, and process them > via mmjsonparse and ommongodb. When I send texts and objects, everything > works fine. But when I try to send arrays, I get objects in Mongo. Very > strange, because the stored raw message shows array yet (check the user_ids > at the end): > > @cee:{"tag":"auth","message":"Sign in > success","details":{"ip":"192.168.54.6"},"user_ids":[7]} > > However, I found this part in Mongo: > > ... "user_ids":{"0":7} > > My System: > Debian 11 Bullseye, Rsyslog 8.2102.0, MongoDB v5.0.5. > > The template I use: > template(name="outfmt" type="list" option.jsonf="on") { > property(outname="time" name="timereported" > dateFormat="rfc3339" format="json") > property(outname="host" name="hostname" format="json") > property(outname="severity" name="syslogseverity-text" > caseConversion="upper" format="json") > property(outname="facility" name="syslogfacility-text" > format="json") > property(outname="tag" name="$!tag" format="jsonf") > property(outname="message" name="$!message" format="jsonf") > property(outname="rawmsg" name="msg" controlcharacters="drop") > property(outname="details" name="$!details" format="jsonf") > property(outname="level" name="$!level" format="jsonf") > property(outname="level_name" name="$!level_name" format="jsonf") > property(outname="user_ids" name="$!user_ids") > property(outname="user_ids" name="$!mesg") > property(outname="extra" name="$!extra" format="jsonf") > property(outname="channel" name="$!channel" format="jsonf") > property(outname="datetime" name="$!datetime" dateFormat="rfc3339" > format="jsonf") > } > (I tried format="json", "jsonf", "csv" for the user_ids, but no effect.) > > And the action is: > if ($syslogfacility-text == 'Local6') then { > action(type="mmutf8fix") > action(type="mmjsonparse") > if $parsesuccess == "OK" then { > action(type="ommongodb" server="192.168.1.11:27017" db="syslog" > collection="events" template="outfmt") > } > stop > } > > Could anybody help me in this context? What should I do to get arrays > instead of objects? > > Kind regards, > Gabor > _______________________________________________ > rsyslog mailing list > https://lists.adiscon.net/mailman/listinfo/rsyslog > http://www.rsyslog.com/professional-services/ > What's up with rsyslog? Follow https://twitter.com/rgerhards > NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad > of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you > DON'T LIKE THAT. > _______________________________________________ rsyslog mailing list https://lists.adiscon.net/mailman/listinfo/rsyslog http://www.rsyslog.com/professional-services/ What's up with rsyslog? Follow https://twitter.com/rgerhards NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T LIKE THAT.