set custom loglevel for external libraries
Daniel P. Berrangé
berrange at redhat.com
Thu Jul 22 15:07:15 UTC 2021
On Thu, Jul 22, 2021 at 04:39:24PM +0200, Olaf Hering wrote:
> Thanks for your reply, I had no time to look at this until now.
>
> Am Wed, 16 Jun 2021 11:44:10 +0100
> schrieb Daniel P. Berrangé <berrange at redhat.com>:
>
> > Anyway if you used a virLogSource object, then turning on debugging
> > exclusively for libxl library messages would be as simple as
> >
> > log_filters="1:libxl.libxl_library"
> >
> > without affecting the global libvirt logging behaviour
>
> It seems log_filters= does not allow arbitrary numbers.
> virLogParseFilter would just allow values from 1 to 4.
> Such extra logfilter needs to handle a xentoollog_level, values from 1 to 9 (>XTL_NONE and <XTL_NUM_LEVELS).
>
> How should this be expressed in a config setting?
Do we actually need to care about every single level, as opposed to
just doing a sparse mapping where we squash several xen levels into
one libvirt level, as the code below shows ?
>
> Perhaps just go the easy route and obtain a value from environment?
>
> --- a/src/libxl/libxl_conf.c
> +++ b/src/libxl/libxl_conf.c
> @@ -1829,7 +1829,7 @@ libxlDriverConfigInit(libxlDriverConfig *cfg)
> return -1;
> }
>
> - cfg->logger = libxlLoggerNew(cfg->logDir, virLogGetDefaultPriority());
> + cfg->logger = libxlLoggerNew(cfg->logDir);
> if (!cfg->logger) {
> VIR_ERROR(_("cannot create logger for libxenlight, disabling driver"));
> return -1;
> --- a/src/libxl/libxl_logger.c
> +++ b/src/libxl/libxl_logger.c
> @@ -129,25 +129,33 @@ libvirt_destroy(xentoollog_logger *logger_in)
>
>
> libxlLogger *
> -libxlLoggerNew(const char *logDir, virLogPriority minLevel)
> +libxlLoggerNew(const char *logDir)
> {
> xentoollog_logger_libvirt logger;
> g_autofree char *path = NULL;
> -
> - switch (minLevel) {
> - case VIR_LOG_DEBUG:
> - logger.minLevel = XTL_DEBUG;
> - break;
> - case VIR_LOG_INFO:
> - logger.minLevel = XTL_INFO;
> - break;
> - case VIR_LOG_WARN:
> - logger.minLevel = XTL_WARN;
> - break;
> - case VIR_LOG_ERROR:
> - logger.minLevel = XTL_ERROR;
> - break;
> + char *xenlight_minlevel = getenv("xenlight_minlevel");
> + int minlevel;
> +
> + if (!(xenlight_minlevel && *xenlight_minlevel &&
> + virStrToLong_i(xenlight_minlevel, NULL, 10, &minlevel) >= 0 &&
> + minlevel > XTL_NONE && minlevel < XTL_NUM_LEVELS)) {
> + minlevel = virLogGetDefaultPriority();
> + switch (minlevel) {
> + case VIR_LOG_DEBUG:
> + minlevel = XTL_DEBUG;
> + break;
> + case VIR_LOG_INFO:
> + minlevel = XTL_INFO;
> + break;
> + case VIR_LOG_WARN:
> + minlevel = XTL_WARN;
> + break;
> + case VIR_LOG_ERROR:
> + minlevel = XTL_ERROR;
> + break;
> + }
> }
> + logger.minLevel = minlevel;
> logger.logDir = logDir;
>
> if ((logger.files = virHashNew(libxlLoggerFileFree)) == NULL)
> --- a/src/libxl/libxl_logger.h
> +++ b/src/libxl/libxl_logger.h
> @@ -24,8 +24,7 @@
>
> typedef struct xentoollog_logger_libvirt libxlLogger;
>
> -libxlLogger *libxlLoggerNew(const char *logDir,
> - virLogPriority minLevel);
> +libxlLogger *libxlLoggerNew(const char *logDir);
> void libxlLoggerFree(libxlLogger *logger);
>
> void libxlLoggerOpenFile(libxlLogger *logger, int id, const char *name,
>
>
> Olaf
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
More information about the libvir-list
mailing list