Do you remember? I promised to make no more major changes to rsyslog until around September. Among the things I did not intend to do was a plug-in interface. And, yes, I did not do that. But varmojfekoj, a frequent contributor, did it ;)
As varmojfekoj says himself, this is not a full-blown plugin implementation. But he has converted the MySQL output module into a loadable plugin. The current output module interface API has some restrictions, so it is not 100% clean - but by far clean enough to be used in practice.
The big advantage of having this plug-in is that package maintainers now can create two packages for rsyslog: one for the base system and another one for the mysql functionality. This removes a lot of problems. For example, when rsyslog was compiled with MySQL support, it would have required the MySQL client to be present. This would not be acceptable for a default syslogd (after all, each system would need to have MySQL client installed...) - clearly unacceptable. Now the base (default) system can be supplied without MySQL (which is no longer tied in). And those who desired database logging, can simply add the MySQL plug-in add-on package. That package will of course pull the MySQL client, but that's fine if you would actually like to use it (sounds only fair, doesn't it?).
OK, finally, here is my (small) work log:
- integrated patch from varmojfekoj to make the mysql module a loadable
many thanks for the patch, MUCH appreciated
- added some code to support the forward-compatibilty directive
$ModLoad MySQL - this is now internally translated to the right name
Needs to be revisited, but is clean enough for now.