UNIX 애플리케이션은 대량의 데이터를 어떻게 기록해야 합니까?

UNIX 애플리케이션은 대량의 데이터를 어떻게 기록해야 합니까?

내 애플리케이션이 일부 사용자에 대해 많은 로그를 생성하지 않을까 걱정됩니다.

  • 사용성에 영향을 주지 않으려면 무엇을 고려해야 합니까(스크롤 지원 등)?
  • 애플리케이션이 로깅 수준 구성을 쿼리하는 표준 방법이 있습니까(비활성화된 로거에 쓰는 데 리소스가 낭비되지 않도록)?

답변1

시스템 로그 대신 파일 에 기록하는 것 이외의 우선 순위로 대량의 데이터를 생성하는 경우 debug시스템 로그보다는 파일에 기본 구성을 기록하거나 최소한 이러한 가능성을 제공하는 것이 좋습니다. 이러한 로그가 디버그 로그인 경우 기본적으로 꺼져 있어야 하며 디버그 로그를 인쇄하도록 지시하는 옵션(명령줄 또는 구성 파일에서)을 사용하여 응용 프로그램을 호출할 때만 인쇄해야 합니다.

애플리케이션의 목적에 따라 많은 로그를 생성하는 것이 분명하다면 괜찮습니다.

애플리케이션 측에서는 로깅 수준 구성을 안정적으로 쿼리할 수 없습니다. 예를 들어 일부 시스템은 원격으로 로그인하면 구성이 다른 시스템에 있게 됩니다. 동일한 시스템에서도 루트가 아닌 사용자는 로깅 구성을 읽을 수 있는 권한이 없을 수 있습니다. 합리적이거나 많은 양의 로그를 생성하도록 애플리케이션을 구성할 수 있는 경우 이를 결정하는 것은 애플리케이션 구성에 달려 있습니다.

syslog 도구를 통해 로깅하는 경우 로그 회전을 지원하기 위해 어떤 작업도 수행할 필요가 없습니다. 파일에 기록하는 경우 애플리케이션이 해당 로그 파일을 닫았다가 다시 열 수 있는 방법을 제공해야 합니다. 이를 위해 SIGUSR1 또는 SIGUSR2를 사용할 수 있으며 종료 신호로 사용하지 않는 경우 SIGHUP을 사용할 수도 있습니다(데몬, 즉 터미널에서 실행되지 않는 프로그램의 경우 SIGHUP은 일반적으로 "구성 다시 로드"를 의미합니다. 여기서 로그 파일 다시 열기를 포함할 수 있음) ). 로그 회전 프로그램은 먼저 로그를 다른 이름으로 옮긴 다음 애플리케이션에 새 로그 파일을 생성하라는 신호를 보냅니다.

관련 정보