syslogd: add option to suppress logging of messages lower than level N (-n N)
This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)
No binary (build failed)
—
(log yok)
| @@ -2780,7 +2780,8 @@ USE_FEATURE_START_STOP_DAEMON_FANCY( \ | |
| "\t-m MIN\t\tMinutes between MARK lines (default=20, 0=off)\n" \ | |
| "\t-n\t\tRun as a foreground process\n" \ | |
| "\t-O FILE\t\tUse an alternate log file (default=/var/log/messages)\n" \ | |
| - | "\t-S\t\tMake logging output smaller." \ |
| + | "\t-l n\tSets the local log level of messages to n\n" \ |
| + | "\t-S\t\tMake logging output smaller" \ |
| USE_FEATURE_ROTATE_LOGFILE( \ | |
| "\n\t-s SIZE\t\tMax size (KB) before rotate (default=200KB, 0=off)\n" \ | |
| "\t-b NUM\t\tNumber of rotated logs to keep (default=1, max=99, 0=purge)") \ | |
| @@ -42,6 +42,9 @@ static int logFileRotate = 1; | |
| /* 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 @@ retry: | |
| #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 @@ int syslogd_main(int argc, char **argv) | |
| 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; | |