syslogd: add option to suppress logging of messages lower than level N (-n N)
diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c
index 9a5a04a..a257e74 100644
--- a/sysklogd/syslogd.c
+++ b/sysklogd/syslogd.c
@@ -42,6 +42,9 @@
/* interval between marks in seconds */
static int MarkInterval = 20 * 60;
+/* level of messages to be locally logged */
+static int logLevel = 8;
+
/* localhost's name */
static char LocalHostName[64];
@@ -413,10 +416,12 @@
#endif
{
/* now spew out the message to wherever it is supposed to go */
- if (opts & SYSLOG_OPT_small)
- message("%s %s\n", timestamp, msg);
- else
- message("%s %s %s %s\n", timestamp, LocalHostName, res, msg);
+ if (pri == 0 || LOG_PRI(pri) < logLevel) {
+ if (opts & SYSLOG_OPT_small)
+ message("%s %s\n", timestamp, msg);
+ else
+ message("%s %s %s %s\n", timestamp, LocalHostName, res, msg);
+ }
}
}
@@ -581,6 +586,13 @@
case 'O':
logFilePath = optarg;
break;
+ case 'l':
+ logLevel = atoi(optarg);
+ /* Valid levels are between 1 and 8 */
+ if (logLevel < 1 || logLevel > 8) {
+ bb_show_usage();
+ }
+ break;
#ifdef CONFIG_FEATURE_ROTATE_LOGFILE
case 's':
logFileSize = atoi(optarg) * 1024;