• D
    log: support logging using shell wildcard syntax · cbb0fd3c
    Daniel P. Berrangé 提交于
    Rather than specialcasing handling of the '*' character, use fnmatch()
    to get normal shell wildcard syntax, as described in 'man glob(7)'.
    
    To get an indication of the performance impact of using globs instead
    of plain string matches, a test program was written. The list of all
    260 log categories was extracted from the source. Then a typical log
    filters setup was picked by creating an array of the strings "qemu",
    "security", "util", "cgroup", "event", "object". Every filter string
    was matched against every log category. Timing information showed that
    using strstr() this took 8 microseconds, while fnmatch() took 114
    microseconds.
    
    IOW, fnmatch is 14 times slower than our existing strstr check. These
    numbers show a worst case scenario that will never be hit, because it
    is rare that every log category would have data output. The log category
    matches are cached, so each category is only checked once no matter how
    many log statements are emitted. IOW despite being slower, this will
    be lost in the noise and have no consequence on real world logging
    performance.
    Reviewed-by: NJohn Ferlan <jferlan@redhat.com>
    Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
    cbb0fd3c
virlog.c 51.4 KB