On Fri, Jun 22, 2007 at 03:16:38AM +0100, Daniel P. Berrange wrote:
This patch adds a generic API for drivers to log warning / debug /
info
messages. The existing error APIs are not suitable for this purpose since
each time you set an error, it clears the previous one. This adds a public
API virSetLogFunc allowing applications to register a callback to receive
log messages. If none is registered, they are sent to the big void. It
adapts the QEMU driver to use this logging API instead of qemudLog and
qemudDebug(). It makes the qemud/qemud.c file register a logging callback
to receive the messages & send them onto syslog/stderr as needed.
There are other drivers (in particular src/xm_internal.c) where this
logging API will be useful too. I've not attempted to make them use it
yet though.
include/libvirt/virterror.h | 24 ++++++++++++++++++
qemud/conf.c | 46 ++++++++++++++++++------------------
qemud/driver.c | 56 ++++++++++++++++++++++----------------------
qemud/iptables.c | 8 +++---
qemud/qemud.c | 36 ++++++++++++++++++++++++++++
qemud/uuid.c | 9 +++----
src/internal.h | 5 +++
src/libvirt_sym.version | 1
src/virterror.c | 28 ++++++++++++++++++++++
9 files changed, 155 insertions(+), 58 deletions(-)
Hum, I actually have a couple of issues with defining a new error logging
API without having discussed it before at least for a bit. I'm a bit worried
by by a few things about it:
- it's only string level, okay that's functionally equivalent
to a syslog, but I find that as an user API, having just a string
is a bit problematic
- it's the first callback kind of support we would actually export
at a blessed API level, I would not rush this I guess we should be
clear that reentrancy of libvirt API from that callback is not
something we would support.
Basically I would prefer if a subset version of that patch not changing
virterror.h could be applied to avoid blocking the reunification work.
Daniel
--
Red Hat Virtualization group
http://redhat.com/virtualization/
Daniel Veillard | virtualization library
http://libvirt.org/
veillard(a)redhat.com | libxml GNOME XML XSLT toolkit
http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine
http://rpmfind.net/