log4j
bash 스크립트 와 같은 것이 있습니까 ? 심각도에 따라 오류를 다르게 처리할 수 있기를 원합니다. 예를 들어 log4j
오류, 정보, 디버그 등을 구별할 수 있습니다. Bash에서 이 작업을 수행할 수 있는 방법이 있나요?
아래 예와 같이 로그에 기록하는 함수를 작성할 수 있습니다.
LOG () {
echo `date` $* >> /var/log/my_log.log
}
하지만 실제로 log4j와 같은 것이 bash와 관련이 있는지 알고 싶습니다.
다음 능력을 얻기 위해서는 -오류 수준등.
답변1
대부분 의 시스템에는 이 logger
유틸리티가 있으며 syslogd
.syslogd
STDERR
로깅 의미 체계는 .와 같은 도구에서 제공하는 것과 완전히 동일하지는 않지만 설정을 메시지 태그와 결합 log4j
하면 facility.level
매우 유사한 결과를 얻을 수 있습니다.
예
노트:이 예제에서는 FreeBSD 버전을 사용합니다 logger
. 시스템에 다른 옵션이 있을 수 있으므로 현지 설명서를 읽어보세요!
logger -p local3.info -f /var/log/messages -t MY_LOG_TAG "something interesting happened"
/var/log/messages
그러면 시설에 info
심각도로 로그인하라는 메시지가 전송됩니다 local3
. -t MY_LOG_TAG
각 라인에 포함된 마커( )로 구성됩니다 . 태그는 등을 사용하여 로그 항목을 추출하는 데 유용합니다 grep
.awk
logger -h loghost -p mail.crit -s -f /var/log/mail "an unrecoverable error has occurred"
crit
로그인을 위해 심각도가 포함된 메시지를 장치에서 mail
원격 컴퓨터로 보냅니다 . 이로 인해 메시지가 스크립트에 인쇄되어 로그로 전송됩니다.loghost
/var/log/mail
-s
STDERR
답변2
쉘 전역 변수를 통해 쉘 스크립트를 로깅하는 방법에 대한 자세한 정보가 많이 있습니다. 쉘 스크립트에서 유사한 로깅을 시뮬레이션할 수 있습니다.http://www.cubicrace.com/2016/03/log-tracing-mechnism-for-shell-scripts.html
이 문서에서는 INFO, DEBUG, ERROR와 같은 로그 수준을 자세히 설명합니다. 스크립트 입력, 스크립트 종료, 함수 입력, 함수 종료 등과 같은 세부 정보를 추적합니다.
샘플 로그:
답변3
GitHub에서 내 로깅 구현을 살펴보는 것이 좋습니다.
https://github.com/codeforester/base/blob/master/lib/stdlib.sh
5가지 로그 수준(ERROR, WARN, INFO, DEBUG 및 VERBOSE)과 여러 로거를 지원합니다.