log: Add _perror() logging function variants
In many places, we have direct perror() calls, which completely bypass logging functions and log files. They are definitely convenient: offer similar convenience with _perror() logging variants, so that we can drop those direct perror() calls. Signed-off-by: Stefano Brivio <sbrivio@redhat.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
afd9cdc9bb
commit
c1140df889
2 changed files with 39 additions and 4 deletions
22
log.c
22
log.c
|
@ -78,6 +78,11 @@ void vlogmsg(int pri, const char *format, va_list ap)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* logmsg() - vlogmsg() wrapper for variable argument lists
|
||||||
|
* @pri: Facility and level map, same as priority for vsyslog()
|
||||||
|
* @format: Message
|
||||||
|
*/
|
||||||
void logmsg(int pri, const char *format, ...)
|
void logmsg(int pri, const char *format, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
@ -87,6 +92,23 @@ void logmsg(int pri, const char *format, ...)
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* logmsg_perror() - vlogmsg() wrapper with perror()-like functionality
|
||||||
|
* @pri: Facility and level map, same as priority for vsyslog()
|
||||||
|
* @format: Message
|
||||||
|
*/
|
||||||
|
void logmsg_perror(int pri, const char *format, ...)
|
||||||
|
{
|
||||||
|
int errno_copy = errno;
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
va_start(ap, format);
|
||||||
|
vlogmsg(pri, format, ap);
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
logmsg(pri, ": %s", strerror(errno_copy));
|
||||||
|
}
|
||||||
|
|
||||||
/* Prefixes for log file messages, indexed by priority */
|
/* Prefixes for log file messages, indexed by priority */
|
||||||
const char *logfile_prefix[] = {
|
const char *logfile_prefix[] = {
|
||||||
NULL, NULL, NULL, /* Unused: LOG_EMERG, LOG_ALERT, LOG_CRIT */
|
NULL, NULL, NULL, /* Unused: LOG_EMERG, LOG_ALERT, LOG_CRIT */
|
||||||
|
|
21
log.h
21
log.h
|
@ -16,11 +16,18 @@
|
||||||
void vlogmsg(int pri, const char *format, va_list ap);
|
void vlogmsg(int pri, const char *format, va_list ap);
|
||||||
void logmsg(int pri, const char *format, ...)
|
void logmsg(int pri, const char *format, ...)
|
||||||
__attribute__((format(printf, 2, 3)));
|
__attribute__((format(printf, 2, 3)));
|
||||||
|
void logmsg_perror(int pri, const char *format, ...)
|
||||||
|
__attribute__((format(printf, 2, 3)));
|
||||||
|
|
||||||
#define err(...) logmsg(LOG_ERR, __VA_ARGS__)
|
#define err(...) logmsg( LOG_ERR, __VA_ARGS__)
|
||||||
#define warn(...) logmsg(LOG_WARNING, __VA_ARGS__)
|
#define warn(...) logmsg( LOG_WARNING, __VA_ARGS__)
|
||||||
#define info(...) logmsg(LOG_INFO, __VA_ARGS__)
|
#define info(...) logmsg( LOG_INFO, __VA_ARGS__)
|
||||||
#define debug(...) logmsg(LOG_DEBUG, __VA_ARGS__)
|
#define debug(...) logmsg( LOG_DEBUG, __VA_ARGS__)
|
||||||
|
|
||||||
|
#define err_perror(...) logmsg_perror( LOG_ERR, __VA_ARGS__)
|
||||||
|
#define warn_perror(...) logmsg_perror( LOG_WARNING, __VA_ARGS__)
|
||||||
|
#define info_perror(...) logmsg_perror( LOG_INFO, __VA_ARGS__)
|
||||||
|
#define debug_perror(...) logmsg_perror( LOG_DEBUG, __VA_ARGS__)
|
||||||
|
|
||||||
#define die(...) \
|
#define die(...) \
|
||||||
do { \
|
do { \
|
||||||
|
@ -28,6 +35,12 @@ void logmsg(int pri, const char *format, ...)
|
||||||
exit(EXIT_FAILURE); \
|
exit(EXIT_FAILURE); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
#define die_perror(...) \
|
||||||
|
do { \
|
||||||
|
err_perror(__VA_ARGS__); \
|
||||||
|
exit(EXIT_FAILURE); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
extern int log_trace;
|
extern int log_trace;
|
||||||
extern bool log_conf_parsed;
|
extern bool log_conf_parsed;
|
||||||
extern bool log_runtime;
|
extern bool log_runtime;
|
||||||
|
|
Loading…
Reference in a new issue