On Tue, 22 Nov 2005 16:31:22 +0000 Dave wrote:
DS> On Mon, 2005-11-21 at 13:57 -0500, Robert Story wrote:
DS> > Currently snmptrapd will register a syslog handler OR a print handler
DS> > after processing arguments. Both handlers call snmp_log() to log the
DS> > final formatted result, so the if even if multiple logs and different
DS> > formats are configured, only one format will be used for all logs.
DS> 
DS> I'm not sure that's true.
DS> 
DS> But checking the code, both handler routines use the same basic
DS> code structure - essentially:
DS> 
DS> 
DS> syslog_handler( pdu, handler )
DS> {
DS>     if (handler->format)
DS>         buf = format_trap( handler->format, pdu );
DS>     else
DS>         buf = format_trap( syslog_format, pdu );
DS>     snmp_log( buf );
DS> }
DS> [...]
DS> So although the same routine is used to log the formatted buffer,
DS> the *contents* of that buffer will depend on the format string
DS> defined for that particular handler.

But the point is that both end with snmp_log(), which will send the message,
whatever the format, to ALL logs. Thus if a filelog is registered but the
syslog_handler is running (possible if no command line options specified but
logOptions set a file to log to), then syslog and the file will get the same
formatted message, regardless of the the format was decided upon.

DS>    And in principle, this could be different for each individual
DS> handler entry (though I don't think that's currently configurable).

Actually, I couldn't even find any code that assigned data to the handler
format. There is no way to configure it!

DS> I don't agree that the same log format would currently be used
DS> for both syslog and file-style handlers.

I'd check again before making any large bets. ;-)

DS> > I'd like to remove the distinction, and have 1 format for all log types.
DS> 
DS> And I *definitely* don't agree with this suggestion.
DS> One of the aims of the handler-based mechanism was to introduce as much
DS> flexibility as possible - hence the per-handler format string.  I would
DS> be *very* loth to see this disappear.

Ok, I won't push to hard on that, but I don't really see how it's supposed to
work. First off, as I said above, I don't see how a custom format can ever get
set. Second, the syslog or print handler is *always* registered, and it will
log the traps once (using print[12]/syslog[12] format). So, even if there were
a way to register a handler with a custom format, *that* format would be used
and sent to *all* logs.

Any way you slice it, all open logs will receive the same format from the
traps.

DS> Hmmm...  how about the following strawman proposal:
DS> 
DS> Have a single "format" directive (or "format1"/"format2" pair) to set
DS> the default format structure.

I don't think we want to remove the v1/v2 distinction, so definitely a pair.

DS> When a trap handler entry is read, the
DS> currently active format string is copied into the handler's format
DS> field (so will be used thereafter).
DS> 
DS> That would allow something like:
DS> 
DS>     traphandle   thistrap           // using default format
DS>     format  "first format string"
DS>     traphandle   thattrap           // using first format
DS>     format  "second format string"
DS>     traphandler  theothertrap       // using second format
DS> 
DS> How does that sounds as a basic model?

I like it.. but while looking at the code, I found another issue. (<shrek
voice>snmptrapd is like and onion</shrek voice>).

It turns out that there is yet another format string, EXECUTE_FORMAT, which is
used to run a command handler. This code will also use the handlers format, if
defined. With the above scheme, setting the format will change the log format
*and* the parameters passed to the trap handler. That will surely break
things. It seems that the custom format is overloaded, and we've painted
ourselves into a corner (or would have, if there was a way to set the custom
formats.)

So I like the idea of per-trap log formatting, but am not quite sure how to
reconcile that with the execute parameter format. The best idea I can come up
with is to change the trap handler structure to have a log_format and
execute_format. But, as with the log file append/truncate options, it feels a
bit late in the game for such a change.

-- 
Robert Story; NET-SNMP Junkie
Support: <http://www.net-snmp.org/> <irc://irc.freenode.net/#net-snmp>
Archive: <http://sourceforge.net/mailarchive/forum.php?forum=net-snmp-coders>

You are lost in a twisty maze of little standards, all different. 


-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.  Get Certified Today
Register for a JBoss Training Course.  Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click
_______________________________________________
Net-snmp-coders mailing list
Net-snmp-coders@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders

Reply via email to