어디에서도 로그 수준의 의미를 찾을 수 없습니다 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을 사용하고 있습니다.
답변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()
볼 수 있습니다 .오직Pass log5()
및 log7()
래퍼 log8()
함수 호출. 이는 프로그램이 메시지를 기록하는 유일한 수준임을 의미합니다 crond
.
이러한 로그 수준은 구체적이며 crond
어떤 수준이나 다른 프로그램과도 관련이 없습니다. syslog(3)
간단히 말해서, 이러한 수준의 의미는 프로그램의 소스 코드에서만 찾을 수 있습니다.
답변2
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
.