web-dev-qa-db-ja.com

crondログレベルの意味

crondのログレベルの意味がどこにも見つかりません。 crondのヘルプのおかげで、0はほぼ「すべてをログに記録」であり、8は「重要な情報のみを表示」であることがわかります。

/ # 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

しかし、さまざまなレベルに関するドキュメント/意味を正確に見つけることができる場所はどこですか?

私はアルパイン3.6を使用しています。

6
Oscar Fanelli

crondのログレベル値の特定のセマンティクスは、コードでのみ定義されているようです。そこにあるすべてのcrondロギングは busybox/miscutils/crond.c 関数のcrondlog()関数を経由します:

static void crondlog(unsigned level, const char *msg, va_list va)
{
    if (level >= G.log_level) {
         /* Do logging... */

そのため、-lコマンドラインオプションで指定したメッセージよりもレベルhigherのメッセージのみがログに記録されます。

次に、そのcrond.cファイルの他の場所で、crondlog()onlyであり、log5()を介して呼び出されていることがわかります。 、log7()、およびlog8()ラッパー関数。つまり、それらのcrondプログラムがメッセージをログに記録する唯一のレベルです。

これらのログレベルはcrondに固有であり、syslog(3)レベルや他のプログラムとは関係ありません。つまり、これらのレベルの意味は、このプログラムのソースコードでのみ見つかります。

3
Castaglia

Slackware 14.2システムでデバッグを行っていましたが、より情報を得るためにcrondが必要でした。ソースコードをダウンロードして、それを実行しました。

私のcrond -l #テストの概要:
-l 0-l 1-l 2、... -l 7まで問題なく動作しました。ロギングレベルが7つしかないため、予測できなくなりました。最初の4つのレベルはかなり静かでした。何も記録しませんでした。

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で実行しています。

2
waynelloydsmith