mirror of
https://github.com/troglobit/finit.git
synced 2026-11-08 16:11:10 +00: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:
1 parent
9a4f46dba4
commit
ec52a6a240
2 files changed
+40
-33
No files matched your search
@@ -29,6 +29,7 @@
|
|||||||
#include "finit.h"
|
#include "finit.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
|
static int loglevel = LOG_NOTICE;
|
||||||
|
|
||||||
void log_toggle_debug(void)
|
void log_toggle_debug(void)
|
||||||
{
|
{
|
||||||
@@ -37,7 +38,26 @@ void log_toggle_debug(void)
|
|||||||
silent = 0;
|
silent = 0;
|
||||||
else
|
else
|
||||||
silent = quiet ? 1 : SILENT_MODE;
|
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, ...)
|
void logit(int prio, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
static int _slup = 0;
|
static int up = 0;
|
||||||
|
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
if (!_slup && !fexist("/dev/log")) {
|
if (!up) {
|
||||||
FILE *fp;
|
if (!fexist("/dev/log")) {
|
||||||
|
early_logit(prio, fmt, ap);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
fp = fopen("/dev/kmsg", "w");
|
openlog("finit", LOG_PID, LOG_DAEMON);
|
||||||
if (fp) {
|
setlogmask(LOG_UPTO(loglevel));
|
||||||
if (debug)
|
up = 1;
|
||||||
prio = LOG_ERR;
|
}
|
||||||
|
|
||||||
fprintf(fp, "<%d>finit[1]:", LOG_DAEMON | prio);
|
vsyslog(prio, fmt, ap);
|
||||||
vfprintf(fp, fmt, ap);
|
done:
|
||||||
fclose(fp);
|
va_end(ap);
|
||||||
} 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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -35,10 +35,10 @@
|
|||||||
* The default log level is LOG_NOTICE. To toggle LOG_DEBUG messages,
|
* The default log level is LOG_NOTICE. To toggle LOG_DEBUG messages,
|
||||||
* use `initctl debug` or add `--debug` to the kernel cmdline.
|
* use `initctl debug` or add `--debug` to the kernel cmdline.
|
||||||
*/
|
*/
|
||||||
#define _d(fmt, args...) logit(LOG_DEBUG, "%s():" fmt, __func__, ##args)
|
#define _d(fmt, args...) logit(LOG_DEBUG, "%s():" fmt "\n", __func__, ##args)
|
||||||
#define _w(fmt, args...) logit(LOG_WARNING, "%s():" fmt, __func__, ##args)
|
#define _w(fmt, args...) logit(LOG_WARNING, "%s():" fmt "\n", __func__, ##args)
|
||||||
#define _e(fmt, args...) logit(LOG_ERR, "%s():" fmt, __func__, ##args)
|
#define _e(fmt, args...) logit(LOG_ERR, "%s():" fmt "\n", __func__, ##args)
|
||||||
#define _pe(fmt, args...) logit(LOG_ERR, "%s():" fmt ": %m", __func__, ##args)
|
#define _pe(fmt, args...) logit(LOG_ERR, "%s():" fmt ": %m\n", __func__, ##args)
|
||||||
|
|
||||||
void log_toggle_debug(void);
|
void log_toggle_debug(void);
|
||||||
void logit (int prio, const char *fmt, ...);
|
void logit (int prio, const char *fmt, ...);
|
||||||
|
|||||||
Reference in new issue
Block a user