mirror of
https://github.com/troglobit/finit.git
synced 2026-10-09 16:50:59 +07:00
Set correct syslog() log level based on debug flag
Also, refactor logging to /dev/kmsg to separate function. Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This commit is contained in:
@@ -29,6 +29,7 @@
|
||||
#include "finit.h"
|
||||
#include "log.h"
|
||||
|
||||
static int loglevel = LOG_NOTICE;
|
||||
|
||||
void log_toggle_debug(void)
|
||||
{
|
||||
@@ -37,7 +38,26 @@ void log_toggle_debug(void)
|
||||
silent = 0;
|
||||
else
|
||||
silent = quiet ? 1 : SILENT_MODE;
|
||||
logit(LOG_INFO, "Debug mode %s", debug ? "enabled" : "disabled");
|
||||
|
||||
logit(LOG_NOTICE, "Debug mode %s", debug ? "enabled" : "disabled");
|
||||
}
|
||||
|
||||
static void early_logit(int prio, const char *fmt, va_list ap)
|
||||
{
|
||||
FILE *fp;
|
||||
|
||||
fp = fopen("/dev/kmsg", "w");
|
||||
if (fp) {
|
||||
if (debug)
|
||||
prio = LOG_ERR;
|
||||
|
||||
fprintf(fp, "<%d>finit[1]:", LOG_DAEMON | prio);
|
||||
vfprintf(fp, fmt, ap);
|
||||
fclose(fp);
|
||||
} else {
|
||||
if (debug || prio <= LOG_ERR)
|
||||
vfprintf(stderr, fmt, ap);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -46,37 +66,24 @@ void log_toggle_debug(void)
|
||||
*/
|
||||
void logit(int prio, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
static int _slup = 0;
|
||||
va_list ap;
|
||||
static int up = 0;
|
||||
|
||||
va_start(ap, fmt);
|
||||
if (!_slup && !fexist("/dev/log")) {
|
||||
FILE *fp;
|
||||
va_start(ap, fmt);
|
||||
if (!up) {
|
||||
if (!fexist("/dev/log")) {
|
||||
early_logit(prio, fmt, ap);
|
||||
goto done;
|
||||
}
|
||||
|
||||
fp = fopen("/dev/kmsg", "w");
|
||||
if (fp) {
|
||||
if (debug)
|
||||
prio = LOG_ERR;
|
||||
openlog("finit", LOG_PID, LOG_DAEMON);
|
||||
setlogmask(LOG_UPTO(loglevel));
|
||||
up = 1;
|
||||
}
|
||||
|
||||
fprintf(fp, "<%d>finit[1]:", LOG_DAEMON | prio);
|
||||
vfprintf(fp, fmt, ap);
|
||||
fclose(fp);
|
||||
} else {
|
||||
fprintf(stderr, "Failed opening /dev/kmsg for appending ...\n");
|
||||
if (debug || prio <= LOG_ERR)
|
||||
vfprintf(stderr, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_slup) {
|
||||
openlog("finit", LOG_PID, LOG_DAEMON);
|
||||
_slup = 1;
|
||||
}
|
||||
|
||||
vsyslog(prio, fmt, ap);
|
||||
va_end(ap);
|
||||
vsyslog(prio, fmt, ap);
|
||||
done:
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -35,10 +35,10 @@
|
||||
* The default log level is LOG_NOTICE. To toggle LOG_DEBUG messages,
|
||||
* use `initctl debug` or add `--debug` to the kernel cmdline.
|
||||
*/
|
||||
#define _d(fmt, args...) logit(LOG_DEBUG, "%s():" fmt, __func__, ##args)
|
||||
#define _w(fmt, args...) logit(LOG_WARNING, "%s():" fmt, __func__, ##args)
|
||||
#define _e(fmt, args...) logit(LOG_ERR, "%s():" fmt, __func__, ##args)
|
||||
#define _pe(fmt, args...) logit(LOG_ERR, "%s():" fmt ": %m", __func__, ##args)
|
||||
#define _d(fmt, args...) logit(LOG_DEBUG, "%s():" fmt "\n", __func__, ##args)
|
||||
#define _w(fmt, args...) logit(LOG_WARNING, "%s():" fmt "\n", __func__, ##args)
|
||||
#define _e(fmt, args...) logit(LOG_ERR, "%s():" fmt "\n", __func__, ##args)
|
||||
#define _pe(fmt, args...) logit(LOG_ERR, "%s():" fmt ": %m\n", __func__, ##args)
|
||||
|
||||
void log_toggle_debug(void);
|
||||
void logit (int prio, const char *fmt, ...);
|
||||
|
||||
Reference in New Issue
Block a user