> -----Original Message----- > From: Brian Knox [mailto:[email protected]] > Sent: Monday, January 07, 2013 11:54 PM > To: rsyslog-users > Cc: Rainer Gerhards > Subject: Re: [rsyslog] working with list templates > > David - no, I have batch processing working already as part of the > patch I'm working on. That part was actually pretty easy using > rewriting the plugin to properly use dequeuebatchsize, etc. > > The issue is that the way the redis protocol constructs commands means > that I can't just put a message payload with spaces in it right into a > command. Additionally depending on which redis command is being run, > the argument list is variable length. > > This is handled one of two ways in the redis C api. The first way is > using a sprintf like interface: > > redisCommand("HINCRBY %s %s %d", stringvar, stringvar, intvar) > > Since I don't want to limit what commands a user of the output plugin > can use, I don't see this interface being usable for this purpose > > The second way is by passing a char ** to RedisCommandArgv with some > information about the number of elements in the char and their lengths. > > This seems like it would fit well, if I can figure out a convenient way > to pass what I want from the template to the output plugin.
OK, I think I have finally understood. This actually sounds like array passing mode is exactly what you need. A prime reason for the idea to phase it out was that the only plugin using it is omoracle, and there are definitely better ways to do it in light of the past enhancements. HOWEVER, your use case seems to be quite different, and it actually makes sense to have no field names. So I would recommend using array passing mode. Once we have a valid use case, chances of phasing it out diminish. Even if so (and you don't speak up loudly enough ;)), phasing out rsyslog features is always a very slow process, taking several years. In that case, there would be ample time left to refactor that part of the redis plugin... So I wouldn't care too much about array passing mode being a bit under suspicion currently... Rainer > > In this case, each member of the char ** is either a redis protocol > keyboard or one of the arguments. > > So in that case "HINCRBY", "httpd", "pageviews", "1" could be elements > in the char **, and when passed to RedisCommandArgv, the correct > protocol message would get constructed to send to redis. > > As per Rainer's thought.. there may be a way I could potentially use > the string formatting options to "escape" the command into a redis > protocol command,which is a thought that hadn't occurred to me. I > don't know if I like that approach better yet than my original > thoughts, but it at the least merits some thought. > > Thanks for all the discussion on this by the way! > > Brian > > > On Mon, Jan 7, 2013 at 5:18 PM, David Lang <[email protected]> wrote: > > > On Mon, 7 Jan 2013, Rainer Gerhards wrote: > > > > The more I read, the more I think what you really want is a > single string. Are we just missing a shell escape property option? > > > > I think that what he is wanting is a single string for each > message, but he wants to shift to processing a batch of messages rather > than one at a time. > > David Lang > > _______________________________________________ > rsyslog mailing list > http://lists.adiscon.net/mailman/listinfo/rsyslog > <http://lists.adiscon.net/mailman/listinfo/rsyslog> > http://www.rsyslog.com/professional-services/ > <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 http://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.

