crond日志级别含义

crond日志级别含义

我在任何地方都找不到 的日志级别含义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 。

相关内容