我在任何地方都找不到 的日志级别含义crond
。我知道 0 几乎是“记录所有内容”,而 8 是“仅显示重要信息”,这要归功于 crond 帮助:
/ # crond --help
BusyBox v1.26.2 (2017-11-23 08:40:54 GMT) multi-call binary.
Usage: crond -fbS -l N -d N -L LOGFILE -c DIR
-f Foreground
-b Background (default)
-S Log to syslog (default)
-l N Set log level. Most verbose:0, default:8
-d N Set log level, log to stderr
-L FILE Log to FILE
-c DIR Cron dir. Default:/var/spool/cron/crontabs
但我在哪里可以准确找到有关不同级别的文档/含义?
我使用的是 Alpine 3.6。
答案1
日志级别值的特定语义似乎crond
仅在代码中定义。所有的crond
日志记录都通过一个crondlog()
函数busybox/miscutils/crond.c
功能:
static void crondlog(unsigned level, const char *msg, va_list va)
{
if (level >= G.log_level) {
/* Do logging... */
这样只有那些有级别的消息更高-l
记录的内容比您通过命令行选项指定的内容要多。
然后,在该crond.c
文件的其他地方,我们看到的crondlog()
是仅有的通过log5()
、log7()
和log8()
包装函数调用。这意味着这些是该程序记录消息的唯一级别crond
。
这些日志级别特定于,与任何级别或其他程序crond
无关。syslog(3)
简而言之,这些级别的含义只能在该程序的源代码中找到。
答案2
我正在 Slackware 14.2 系统上进行一些调试,需要 crond 提供更多信息。我下载了源代码并浏览了它。
我的测试总结:crond -l #
-l 0
, -l 1
, -l 2
, ... 工作正常-l 7
;然后它变得不可预测,因为只有 7 个日志记录级别。前四层非常安静;他们没有记录任何内容。
日志记录级别摘要来自crond main.c
:
-l emerg or panic LOG_EMERG 0 [* system is unusable *]
-l alert LOG_ALERT 1 [* action must be taken immediately *]
-l crit LOG_CRIT 2 [* critical conditions *]
-l error or err LOG_ERR 3 [* error conditions *]
-l warn or warning LOG_WARNING 4 [* warning conditions *]
-l notice LOG_NOTICE 5 [* normal but significant condition *] the default
-l info LOG_INFO 6 [* informational *]
-l debug LOG_DEBUG 7 [* debug-level messages *] same as -d option
注意:数字越大,您从 crond 获得的日志记录就越多。我现在就运行它 -l debug
。