mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-30 01:43:23 +00:00
virlog: Remove functions that aren't used anywhere anymore
This is mainly virLogAddOutputTo* which were replaced by virLogNewOutputTo* and the previously poorly named ones virLogParseAndDefine* functions. All of these are unnecessary now, since all the original callers were transparently switched to the new model of separate parsing and defining logic. Signed-off-by: Erik Skultety <eskultet@redhat.com>
This commit is contained in:
parent
30b650b2ba
commit
adda3e4f9b
@ -1869,9 +1869,7 @@ virLockSpaceReleaseResourcesForOwner;
|
|||||||
|
|
||||||
|
|
||||||
# util/virlog.h
|
# util/virlog.h
|
||||||
virLogDefineFilter;
|
|
||||||
virLogDefineFilters;
|
virLogDefineFilters;
|
||||||
virLogDefineOutput;
|
|
||||||
virLogDefineOutputs;
|
virLogDefineOutputs;
|
||||||
virLogFilterFree;
|
virLogFilterFree;
|
||||||
virLogFilterListFree;
|
virLogFilterListFree;
|
||||||
@ -1887,8 +1885,6 @@ virLogMessage;
|
|||||||
virLogOutputFree;
|
virLogOutputFree;
|
||||||
virLogOutputListFree;
|
virLogOutputListFree;
|
||||||
virLogOutputNew;
|
virLogOutputNew;
|
||||||
virLogParseAndDefineFilters;
|
|
||||||
virLogParseAndDefineOutputs;
|
|
||||||
virLogParseDefaultPriority;
|
virLogParseDefaultPriority;
|
||||||
virLogParseFilter;
|
virLogParseFilter;
|
||||||
virLogParseFilters;
|
virLogParseFilters;
|
||||||
|
@ -278,71 +278,6 @@ virLogFilterListFree(virLogFilterPtr *list, int count)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* virLogDefineFilter:
|
|
||||||
* @match: the pattern to match
|
|
||||||
* @priority: the priority to give to messages matching the pattern
|
|
||||||
* @flags: extra flags, see virLogFilterFlags enum
|
|
||||||
*
|
|
||||||
* Defines a pattern used for log filtering, it allow to select or
|
|
||||||
* reject messages independently of the default priority.
|
|
||||||
* The filter defines a rules that will apply only to messages matching
|
|
||||||
* the pattern (currently if @match is a substring of the message category)
|
|
||||||
*
|
|
||||||
* Returns -1 in case of failure or the filter number if successful
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
virLogDefineFilter(const char *match,
|
|
||||||
virLogPriority priority,
|
|
||||||
unsigned int flags)
|
|
||||||
{
|
|
||||||
size_t i;
|
|
||||||
int ret = -1;
|
|
||||||
char *mdup = NULL;
|
|
||||||
virLogFilterPtr filter = NULL;
|
|
||||||
|
|
||||||
virCheckFlags(VIR_LOG_STACK_TRACE, -1);
|
|
||||||
|
|
||||||
if (virLogInitialize() < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if ((match == NULL) || (priority < VIR_LOG_DEBUG) ||
|
|
||||||
(priority > VIR_LOG_ERROR))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
virLogLock();
|
|
||||||
for (i = 0; i < virLogNbFilters; i++) {
|
|
||||||
if (STREQ(virLogFilters[i]->match, match)) {
|
|
||||||
virLogFilters[i]->priority = priority;
|
|
||||||
ret = i;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (VIR_STRDUP_QUIET(mdup, match) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
if (VIR_ALLOC_QUIET(filter) < 0) {
|
|
||||||
VIR_FREE(mdup);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
filter->match = mdup;
|
|
||||||
filter->priority = priority;
|
|
||||||
filter->flags = flags;
|
|
||||||
|
|
||||||
if (VIR_APPEND_ELEMENT_QUIET(virLogFilters, virLogNbFilters, filter) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
virLogFiltersSerial++;
|
|
||||||
ret = virLogNbFilters - 1;
|
|
||||||
cleanup:
|
|
||||||
virLogUnlock();
|
|
||||||
if (ret < 0)
|
|
||||||
virReportOOMError();
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* virLogResetOutputs:
|
* virLogResetOutputs:
|
||||||
*
|
*
|
||||||
@ -392,73 +327,6 @@ virLogOutputListFree(virLogOutputPtr *list, int count)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* virLogDefineOutput:
|
|
||||||
* @f: the function to call to output a message
|
|
||||||
* @c: the function to call to close the output (or NULL)
|
|
||||||
* @data: extra data passed as first arg to the function
|
|
||||||
* @priority: minimal priority for this filter, use 0 for none
|
|
||||||
* @dest: where to send output of this priority
|
|
||||||
* @name: optional name data associated with an output
|
|
||||||
* @flags: extra flag, currently unused
|
|
||||||
*
|
|
||||||
* Defines an output function for log messages. Each message once
|
|
||||||
* gone though filtering is emitted through each registered output.
|
|
||||||
*
|
|
||||||
* Returns -1 in case of failure or the output number if successful
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
virLogDefineOutput(virLogOutputFunc f,
|
|
||||||
virLogCloseFunc c,
|
|
||||||
void *data,
|
|
||||||
virLogPriority priority,
|
|
||||||
virLogDestination dest,
|
|
||||||
const char *name,
|
|
||||||
unsigned int flags)
|
|
||||||
{
|
|
||||||
char *ndup = NULL;
|
|
||||||
virLogOutputPtr output = NULL;
|
|
||||||
|
|
||||||
virCheckFlags(0, -1);
|
|
||||||
|
|
||||||
if (virLogInitialize() < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (f == NULL)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (dest == VIR_LOG_TO_SYSLOG || dest == VIR_LOG_TO_FILE) {
|
|
||||||
if (!name) {
|
|
||||||
virReportOOMError();
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (VIR_STRDUP(ndup, name) < 0)
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (VIR_ALLOC_QUIET(output) < 0) {
|
|
||||||
VIR_FREE(ndup);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
output->logInitMessage = true;
|
|
||||||
output->f = f;
|
|
||||||
output->c = c;
|
|
||||||
output->data = data;
|
|
||||||
output->priority = priority;
|
|
||||||
output->dest = dest;
|
|
||||||
output->name = ndup;
|
|
||||||
|
|
||||||
virLogLock();
|
|
||||||
if (VIR_APPEND_ELEMENT_QUIET(virLogOutputs, virLogNbOutputs, output))
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
virLogUnlock();
|
|
||||||
return virLogNbOutputs;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
virLogFormatString(char **msg,
|
virLogFormatString(char **msg,
|
||||||
int linenr,
|
int linenr,
|
||||||
@ -772,16 +640,6 @@ virLogCloseFd(void *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
virLogAddOutputToStderr(virLogPriority priority)
|
|
||||||
{
|
|
||||||
if (virLogDefineOutput(virLogOutputToFd, NULL, (void *)2L, priority,
|
|
||||||
VIR_LOG_TO_STDERR, NULL, 0) < 0)
|
|
||||||
return -1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static virLogOutputPtr
|
static virLogOutputPtr
|
||||||
virLogNewOutputToStderr(virLogPriority priority)
|
virLogNewOutputToStderr(virLogPriority priority)
|
||||||
{
|
{
|
||||||
@ -790,25 +648,6 @@ virLogNewOutputToStderr(virLogPriority priority)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
virLogAddOutputToFile(virLogPriority priority,
|
|
||||||
const char *file)
|
|
||||||
{
|
|
||||||
int fd;
|
|
||||||
|
|
||||||
fd = open(file, O_CREAT | O_APPEND | O_WRONLY, S_IRUSR | S_IWUSR);
|
|
||||||
if (fd < 0)
|
|
||||||
return -1;
|
|
||||||
if (virLogDefineOutput(virLogOutputToFd, virLogCloseFd,
|
|
||||||
(void *)(intptr_t)fd,
|
|
||||||
priority, VIR_LOG_TO_FILE, file, 0) < 0) {
|
|
||||||
VIR_FORCE_CLOSE(fd);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static virLogOutputPtr
|
static virLogOutputPtr
|
||||||
virLogNewOutputToFile(virLogPriority priority,
|
virLogNewOutputToFile(virLogPriority priority,
|
||||||
const char *file)
|
const char *file)
|
||||||
@ -895,28 +734,6 @@ virLogCloseSyslog(void *data ATTRIBUTE_UNUSED)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
virLogAddOutputToSyslog(virLogPriority priority,
|
|
||||||
const char *ident)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* ident needs to be kept around on Solaris
|
|
||||||
*/
|
|
||||||
VIR_FREE(current_ident);
|
|
||||||
if (VIR_STRDUP(current_ident, ident) < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
openlog(current_ident, 0, 0);
|
|
||||||
if (virLogDefineOutput(virLogOutputToSyslog, virLogCloseSyslog, NULL,
|
|
||||||
priority, VIR_LOG_TO_SYSLOG, ident, 0) < 0) {
|
|
||||||
closelog();
|
|
||||||
VIR_FREE(current_ident);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static virLogOutputPtr
|
static virLogOutputPtr
|
||||||
virLogNewOutputToSyslog(virLogPriority priority,
|
virLogNewOutputToSyslog(virLogPriority priority,
|
||||||
const char *ident)
|
const char *ident)
|
||||||
@ -1157,27 +974,6 @@ virLogOutputToJournald(virLogSourcePtr source,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int virLogAddOutputToJournald(int priority)
|
|
||||||
{
|
|
||||||
int journalfd;
|
|
||||||
|
|
||||||
if ((journalfd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0)
|
|
||||||
return -1;
|
|
||||||
if (virSetInherit(journalfd, false) < 0) {
|
|
||||||
VIR_LOG_CLOSE(journalfd);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (virLogDefineOutput(virLogOutputToJournald, virLogCloseFd,
|
|
||||||
(void *)(intptr_t) journalfd, priority,
|
|
||||||
VIR_LOG_TO_JOURNALD, NULL, 0) < 0) {
|
|
||||||
VIR_LOG_CLOSE(journalfd);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static virLogOutputPtr
|
static virLogOutputPtr
|
||||||
virLogNewOutputToJournald(int priority)
|
virLogNewOutputToJournald(int priority)
|
||||||
{
|
{
|
||||||
@ -1230,235 +1026,6 @@ int virLogPriorityFromSyslog(int priority ATTRIBUTE_UNUSED)
|
|||||||
#endif /* HAVE_SYSLOG_H */
|
#endif /* HAVE_SYSLOG_H */
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
virLogParseAndDefineOutput(const char *src)
|
|
||||||
{
|
|
||||||
int ret = -1;
|
|
||||||
char **tokens = NULL;
|
|
||||||
char *abspath = NULL;
|
|
||||||
size_t count = 0;
|
|
||||||
virLogPriority prio;
|
|
||||||
int dest;
|
|
||||||
bool isSUID = virIsSUID();
|
|
||||||
|
|
||||||
if (!src)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
VIR_DEBUG("output=%s", src);
|
|
||||||
|
|
||||||
/* split our format prio:destination:additional_data to tokens and parse
|
|
||||||
* them individually
|
|
||||||
*/
|
|
||||||
if (!(tokens = virStringSplitCount(src, ":", 0, &count)))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (virStrToLong_uip(tokens[0], NULL, 10, &prio) < 0 ||
|
|
||||||
(prio < VIR_LOG_DEBUG) || (prio > VIR_LOG_ERROR))
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
if ((dest = virLogDestinationTypeFromString(tokens[1])) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
if (((dest == VIR_LOG_TO_STDERR ||
|
|
||||||
dest == VIR_LOG_TO_JOURNALD) && count != 2) ||
|
|
||||||
((dest == VIR_LOG_TO_FILE ||
|
|
||||||
dest == VIR_LOG_TO_SYSLOG) && count != 3))
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
/* if running with setuid, only 'stderr' is allowed */
|
|
||||||
if (isSUID && dest != VIR_LOG_TO_STDERR)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
switch ((virLogDestination) dest) {
|
|
||||||
case VIR_LOG_TO_STDERR:
|
|
||||||
ret = virLogAddOutputToStderr(prio);
|
|
||||||
break;
|
|
||||||
case VIR_LOG_TO_SYSLOG:
|
|
||||||
#if HAVE_SYSLOG_H
|
|
||||||
ret = virLogAddOutputToSyslog(prio, tokens[2]);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case VIR_LOG_TO_FILE:
|
|
||||||
if (virFileAbsPath(tokens[2], &abspath) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
ret = virLogAddOutputToFile(prio, abspath);
|
|
||||||
VIR_FREE(abspath);
|
|
||||||
break;
|
|
||||||
case VIR_LOG_TO_JOURNALD:
|
|
||||||
#if USE_JOURNALD
|
|
||||||
ret = virLogAddOutputToJournald(prio);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case VIR_LOG_TO_OUTPUT_LAST:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
if (ret < 0)
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
||||||
_("Failed to parse and define log output %s"), src);
|
|
||||||
virStringFreeList(tokens);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* virLogParseAndDefineOutputs:
|
|
||||||
* @outputs: string defining a (set of) output(s)
|
|
||||||
*
|
|
||||||
* The format for an output can be:
|
|
||||||
* x:stderr
|
|
||||||
* output goes to stderr
|
|
||||||
* x:syslog:name
|
|
||||||
* use syslog for the output and use the given name as the ident
|
|
||||||
* x:file:file_path
|
|
||||||
* output to a file, with the given filepath
|
|
||||||
* In all case the x prefix is the minimal level, acting as a filter
|
|
||||||
* 1: DEBUG
|
|
||||||
* 2: INFO
|
|
||||||
* 3: WARNING
|
|
||||||
* 4: ERROR
|
|
||||||
*
|
|
||||||
* Multiple output can be defined in a single @output, they just need to be
|
|
||||||
* separated by spaces.
|
|
||||||
*
|
|
||||||
* If running in setuid mode, then only the 'stderr' output will
|
|
||||||
* be allowed
|
|
||||||
*
|
|
||||||
* Returns the number of output parsed or -1 in case of error.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
virLogParseAndDefineOutputs(const char *src)
|
|
||||||
{
|
|
||||||
int ret = -1;
|
|
||||||
int count = 0;
|
|
||||||
size_t i;
|
|
||||||
char **strings = NULL;
|
|
||||||
|
|
||||||
if (!src)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
VIR_DEBUG("outputs=%s", src);
|
|
||||||
|
|
||||||
if (!(strings = virStringSplit(src, " ", 0)))
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
for (i = 0; strings[i]; i++) {
|
|
||||||
/* virStringSplit may return empty strings */
|
|
||||||
if (STREQ(strings[i], ""))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (virLogParseAndDefineOutput(strings[i]) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = count;
|
|
||||||
cleanup:
|
|
||||||
virStringFreeList(strings);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
virLogParseAndDefineFilter(const char *filter)
|
|
||||||
{
|
|
||||||
int ret = -1;
|
|
||||||
size_t count = 0;
|
|
||||||
virLogPriority prio;
|
|
||||||
char **tokens = NULL;
|
|
||||||
unsigned int flags = 0;
|
|
||||||
char *ref = NULL;
|
|
||||||
|
|
||||||
if (!filter)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
VIR_DEBUG("filter=%s", filter);
|
|
||||||
|
|
||||||
if (!(tokens = virStringSplitCount(filter, ":", 0, &count)))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (count != 2)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
if (virStrToLong_uip(tokens[0], NULL, 10, &prio) < 0 ||
|
|
||||||
(prio < VIR_LOG_DEBUG) || (prio > VIR_LOG_ERROR))
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
ref = tokens[1];
|
|
||||||
if (ref[0] == '+') {
|
|
||||||
flags |= VIR_LOG_STACK_TRACE;
|
|
||||||
ref++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!*ref)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
if (virLogDefineFilter(ref, prio, flags) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
cleanup:
|
|
||||||
if (ret < 0)
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
||||||
_("Failed to parse and define log filter %s"), filter);
|
|
||||||
virStringFreeList(tokens);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* virLogParseAndDefineFilters:
|
|
||||||
* @filters: string defining a (set of) filter(s)
|
|
||||||
*
|
|
||||||
* The format for a filter is:
|
|
||||||
* x:name
|
|
||||||
* where name is a match string
|
|
||||||
* the x prefix is the minimal level where the messages should be logged
|
|
||||||
* 1: DEBUG
|
|
||||||
* 2: INFO
|
|
||||||
* 3: WARNING
|
|
||||||
* 4: ERROR
|
|
||||||
*
|
|
||||||
* Multiple filter can be defined in a single @filters, they just need to be
|
|
||||||
* separated by spaces.
|
|
||||||
*
|
|
||||||
* Returns the number of filter parsed or -1 in case of error.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
virLogParseAndDefineFilters(const char *filters)
|
|
||||||
{
|
|
||||||
int ret = -1;
|
|
||||||
int count = 0;
|
|
||||||
size_t i;
|
|
||||||
char **strings = NULL;
|
|
||||||
|
|
||||||
if (!filters)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
VIR_DEBUG("filters=%s", filters);
|
|
||||||
|
|
||||||
if (!(strings = virStringSplit(filters, " ", 0)))
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
for (i = 0; strings[i]; i++) {
|
|
||||||
/* virStringSplit may return empty strings */
|
|
||||||
if (STREQ(strings[i], ""))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (virLogParseAndDefineFilter(strings[i]) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = count;
|
|
||||||
cleanup:
|
|
||||||
virStringFreeList(strings);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* virLogGetDefaultPriority:
|
* virLogGetDefaultPriority:
|
||||||
*
|
*
|
||||||
|
@ -183,16 +183,6 @@ char *virLogGetOutputs(void);
|
|||||||
virLogPriority virLogGetDefaultPriority(void);
|
virLogPriority virLogGetDefaultPriority(void);
|
||||||
int virLogSetDefaultPriority(virLogPriority priority);
|
int virLogSetDefaultPriority(virLogPriority priority);
|
||||||
void virLogSetFromEnv(void);
|
void virLogSetFromEnv(void);
|
||||||
int virLogDefineFilter(const char *match,
|
|
||||||
virLogPriority priority,
|
|
||||||
unsigned int flags);
|
|
||||||
int virLogDefineOutput(virLogOutputFunc f,
|
|
||||||
virLogCloseFunc c,
|
|
||||||
void *data,
|
|
||||||
virLogPriority priority,
|
|
||||||
virLogDestination dest,
|
|
||||||
const char *name,
|
|
||||||
unsigned int flags);
|
|
||||||
void virLogOutputFree(virLogOutputPtr output);
|
void virLogOutputFree(virLogOutputPtr output);
|
||||||
void virLogOutputListFree(virLogOutputPtr *list, int count);
|
void virLogOutputListFree(virLogOutputPtr *list, int count);
|
||||||
void virLogFilterFree(virLogFilterPtr filter);
|
void virLogFilterFree(virLogFilterPtr filter);
|
||||||
@ -208,8 +198,6 @@ void virLogLock(void);
|
|||||||
void virLogUnlock(void);
|
void virLogUnlock(void);
|
||||||
int virLogReset(void);
|
int virLogReset(void);
|
||||||
int virLogParseDefaultPriority(const char *priority);
|
int virLogParseDefaultPriority(const char *priority);
|
||||||
int virLogParseAndDefineFilters(const char *filters);
|
|
||||||
int virLogParseAndDefineOutputs(const char *output);
|
|
||||||
int virLogPriorityFromSyslog(int priority);
|
int virLogPriorityFromSyslog(int priority);
|
||||||
void virLogMessage(virLogSourcePtr source,
|
void virLogMessage(virLogSourcePtr source,
|
||||||
virLogPriority priority,
|
virLogPriority priority,
|
||||||
|
Loading…
Reference in New Issue
Block a user