Bash:
로깅

방법:

Bash에서 로깅은 파일에 출력을 리다이렉트하거나 추가하는 것만큼 간단할 수 있습니다. 기본 예제는 다음과 같습니다:

echo "스크립트 시작..." >> script.log
# 여기에 스크립트 명령어가 들어갑니다
echo "스크립트 $(date)에 완료됨" >> script.log

더 고급 기능이 필요하다면, 시스템 전체 로깅을 위해 syslog를 활용할 수 있습니다:

logger "내 스크립트에서 온 사용자 정의 메시지"

logger는 syslog 서비스에 로그 메시지를 보내고, 그 후에 메시지는 시스템의 syslog 구성에 따라 처리됩니다.

script.log에서 포착된 샘플 출력:

스크립트 시작...
2021년 3월 23일 화요일 09:26:35 PDT에 스크립트 완료됨

심층 탐구

역사적으로 Unix 계열 시스템에서는 로깅이 syslog 서비스에 의해 촉진되었으며, 다양한 애플리케이션과 시스템의 부분들이 메시지를 중앙에 로깅할 수 있도록 하였습니다. 이는 시스템 전체에 걸쳐 표준화된 로깅 메커니즘을 구현할 수 있게 합니다.

대안을 찾는 경우, 일부는 syslog-ngrsyslog를 사용하여 좀 더 고급 로깅 기능을 활용하거나, 분석 목적으로 시계열 데이터베이스에 로그를 기록할 수도 있습니다. Log4j(Java 생태계)나 Monolog(PHP)와 같이 구조화되고 구성 가능한 로깅 옵션을 제공할 수 있는 전용 로깅 라이브러리나 애플리케이션을 사용하는 것이 Bash와 같은 스크립팅 언어에 대해서도 복잡성이 높은 애플리케이션에 적합할 수 있습니다.

로깅을 구현하는 방법은 애플리케이션의 요구 사항에 크게 달려 있습니다. 단순히 스크립트 진행 상황을 추적하기 위한 출력이 필요한 경우, 파일에 메시지를 추가하는 것은 간편합니다. 그러나 좀 더 확장성 있고 견고한 로깅을 원한다면, 로그 회전, 로그 레벨 및 원격 로깅과 같은 기능을 지원하는 로깅 시스템과 통합할 것을 고려해야 합니다.

참고

  • loggersyslog 함수에 대한 man 페이지는 항상 도움이 되므로, man logger 또는 man syslog를 시도해 보세요.
  • 시스템 로깅에 대한 심층적인 이해를 원한다면 rsyslogsyslog-ng 문서를 참고하세요.
  • Unix 계열 시스템에서의 로깅 배경과 원칙에 대해 더 알아보려면, RFC 5424에 문서화된 Syslog 프로토콜이 포괄적인 정보를 제공합니다.