[libvirt] [PATCH v2 14/20] virlog: Introduce virLogSetFilters

John Ferlan jferlan at redhat.com
Wed Sep 21 18:42:28 UTC 2016



On 08/18/2016 07:47 AM, Erik Skultety wrote:
> This method will eventually replace virLogParseAndDefineFilters which
> currently does both parsing and defining.
> 
> Signed-off-by: Erik Skultety <eskultet at redhat.com>
> ---
>  src/libvirt_private.syms |  1 +
>  src/util/virlog.c        | 31 +++++++++++++++++++++++++++++++
>  src/util/virlog.h        |  1 +
>  3 files changed, 33 insertions(+)
> 
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index 5fb30e6..fec0b8b 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -1875,6 +1875,7 @@ virLogPriorityFromSyslog;
>  virLogProbablyLogMessage;
>  virLogReset;
>  virLogSetDefaultPriority;
> +virLogSetFilters;
>  virLogSetFromEnv;
>  virLogSetOutputs;
>  virLogUnlock;
> diff --git a/src/util/virlog.c b/src/util/virlog.c
> index a60c027..b1d2543 100644
> --- a/src/util/virlog.c
> +++ b/src/util/virlog.c
> @@ -2141,3 +2141,34 @@ virLogSetOutputs(const char *src)
>          virLogOutputListFree(outputs, noutputs);
>      return ret;
>  }
> +
> +
> +/**
> + * virLogSetFilters:
> + * @src: string defining a (set of) filter(s)
> + *
> + * Replaces the current set of defined filters with a new set of filters.
> + *
> + * Returns the number of filters successfully defined or -1 in case of an
> + * error.
> + */
> +int
> +virLogSetFilters(const char *src)
> +{
> +    int ret = -1;
> +    int nfilters = 0;
> +    virLogFilterPtr *filters = NULL;
> +
> +    if (virLogInitialize() < 0)
> +        return -1;
> +
> +    if ((nfilters = virLogParseFilters(src, &filters)) < 0)
> +        goto cleanup;
> +
> +    if ((ret = virLogDefineFilters(filters, nfilters)) < 0)
> +        goto cleanup;
> +

Here you need the 'filters = NULL;', so the following doesn't undo what
you just did.

> + cleanup:
> +    virLogFilterListFree(filters, nfilters);
> +    return ret;
> +}
> diff --git a/src/util/virlog.h b/src/util/virlog.h
> index 88e6ac8..2f88f2f 100644
> --- a/src/util/virlog.h
> +++ b/src/util/virlog.h
> @@ -198,6 +198,7 @@ void virLogOutputListFree(virLogOutputPtr *list, int count);
>  void virLogFilterFree(virLogFilterPtr filter);
>  void virLogFilterListFree(virLogFilterPtr *list, int count);
>  int virLogSetOutputs(const char *outputs);
> +int virLogSetFilters(const char *filters);

s/;/ATTRIBUTE_NONNULL(1);


ACK w/ adjustments

John

>  
>  /*
>  * Internal logging API
> 




More information about the libvir-list mailing list