Log client errors in libvirtd at debug priority

This reverts commit

 Log all errors at level INFO to stop polluting syslog
 04bd0360f3.

and makes virRaiseErrorFull() log errors at debug priority
when called from inside libvirtd. This stops libvirtd from
polluting it's own log with client errors at error priority
that'll be reported and logged on the client side anyway.
This commit is contained in:
Matthias Bolte 2010-11-30 14:10:42 +01:00
parent 4f7162d106
commit abff683f78
4 changed files with 33 additions and 1 deletions

View File

@ -3083,6 +3083,10 @@ int main(int argc, char **argv) {
exit(EXIT_FAILURE);
}
/* Set error logging priority to debug, so client errors don't
* show up as errors in the daemon log */
virErrorSetLogPriority(VIR_LOG_DEBUG);
while (1) {
int optidx = 0;
int c;

View File

@ -831,6 +831,7 @@ virAuditSend;
# virterror_internal.h
virDispatchError;
virErrorMsg;
virErrorSetLogPriority;
virRaiseErrorFull;
virReportErrorHelper;
virReportOOMErrorFull;

View File

@ -26,6 +26,7 @@ virThreadLocal virLastErr;
virErrorFunc virErrorHandler = NULL; /* global error handler */
void *virUserData = NULL; /* associated data */
static int virErrorLogPriority = -1;
/*
* Macro used to format the message as a string in virRaiseError
@ -64,6 +65,18 @@ void *virUserData = NULL; /* associated data */
}} \
}
static virLogPriority virErrorLevelPriority(virErrorLevel level) {
switch (level) {
case VIR_ERR_NONE:
return(VIR_LOG_INFO);
case VIR_ERR_WARNING:
return(VIR_LOG_WARN);
case VIR_ERR_ERROR:
return(VIR_LOG_ERROR);
}
return(VIR_LOG_ERROR);
}
static const char *virErrorDomainName(virErrorDomain domain) {
const char *dom = "unknown";
switch (domain) {
@ -676,6 +689,7 @@ virRaiseErrorFull(virConnectPtr conn ATTRIBUTE_UNUSED,
{
virErrorPtr to;
char *str;
int priority;
/*
* All errors are recorded in thread local storage
@ -703,8 +717,14 @@ virRaiseErrorFull(virConnectPtr conn ATTRIBUTE_UNUSED,
/*
* Hook up the error or warning to the logging facility
* XXXX should we include filename as 'category' instead of domain name ?
*
* When an explicit error log priority is set then use it, otherwise
* translate the error level to the log priority. This is used by libvirtd
* to log client errors at debug priority.
*/
virLogMessage(virErrorDomainName(domain), VIR_LOG_INFO,
priority = virErrorLogPriority == -1 ? virErrorLevelPriority(level)
: virErrorLogPriority;
virLogMessage(virErrorDomainName(domain), priority,
funcname, linenr, 1, "%s", str);
/*
@ -1319,3 +1339,9 @@ void virReportOOMErrorFull(int domcode,
domcode, VIR_ERR_NO_MEMORY, VIR_ERR_ERROR,
virerr, NULL, NULL, -1, -1, virerr, NULL);
}
void
virErrorSetLogPriority(int priority)
{
virErrorLogPriority = priority;
}

View File

@ -89,5 +89,6 @@ void virReportOOMErrorFull(int domcode,
int virSetError(virErrorPtr newerr);
void virDispatchError(virConnectPtr conn);
const char *virStrerror(int theerrno, char *errBuf, size_t errBufLen);
void virErrorSetLogPriority(int priority);
#endif