일반적인 Linux 시스템에 왜 그렇게 많은 로그 파일이 있는지 궁금합니다. 로깅을 위해 하나의 시스템 API 기능과 모든 애플리케이션에 대한 모든 로그 항목을 보유하는 하나의 포괄적인 테이블을 사용하는 것이 더 나은 생각이 아닐까요?
답변1
답변2
간단한 텍스트 파일을 사용하면 로그 항목을 가져오는 데 데이터베이스 관련 도구가 필요하지 않다는 장점이 있습니다.
원하는 경우 grep으로 분석할 수 있고, 선호하는 호출기로 열 수 있으며, 추가 라이브러리 없이도 선호하는 스크립팅 언어(예: Perl, Python 등)로 처리할 수 있습니다.
Unix 시스템에는 이미 일종의 "syslog API"가 있습니다. 이를 syslog라고 합니다. Syslog는 실제 API는 아니지만 메시지 로깅의 표준입니다. 이름은 네트워크 프로토콜과 그 뒤에 있는 라이브러리 및 데몬을 나타냅니다.
대부분의 시스템의 기본 구성은 로컬 메시지를 수신하는 syslog 데몬입니다.
데몬은 메시지를 수락하고 기록합니다. 모든 유형의 플랫폼에 대해 다양한 syslog 데몬 구현이 있으며 데이터베이스에 메시지를 기록할 수도 있습니다.
그것은 당신에게 달려 있습니다.
답변3
일반적인 Linux 시스템에 왜 그렇게 많은 로그 파일이 있는지 궁금합니다.
로그 파일마다 다른 정보가 포함되어 있습니다(일반적으로 일부 중복이 있음). 서로 다른 순환 및 보존 정책, 서로 다른 권한 등 서로 다른 특성을 갖는 경우가 많습니다. syslog 데몬은 이를 작성하는 역할을 하며 해당 설정을 볼 수 있습니다./etc/syslog.conf
또는/etc/syslog-ng.conf
.
로깅을 위해 시스템 API 기능을 사용하는 것이 더 좋은 생각이 아닐까요?
이것은 좋은 생각이다. 그렇게 부르자시스템 로그. 그 작업은 로그 항목을 syslog 데몬으로 보내는 것입니다.
그리고 모든 애플리케이션에 대한 모든 로그 항목을 보관하는 포괄적인 테이블이 필요합니까?
이제 그것은 벌레 통조림이 되었습니다. 데이터베이스 엔진, 관계형 데이터베이스, SQL로 쿼리할 수 있는 데이터베이스가 있다고 가정하는 것 같습니다. 하지만 유닉스는 SQL보다 오래됐기 때문에 SQL을 표준 구성요소로 채택하지 않는 데는 그럴 만한 이유가 있다. Unix에서는 데이터베이스가 파일 시스템입니다. 관계형 데이터베이스가 아닙니다.단순한하나. 해당 항목은 행이 아니지만단순한파일, 바람직하게는 텍스트, 바람직하게는 간단한 형식입니다. 예를 들어, 로그 파일은 날짜, 시스템 이름, 원래 프로그램 및 항목 텍스트를 포함하는 항목이 한 줄에 하나씩 있는 텍스트 파일입니다. 관계형 데이터베이스를 사용하면 다음과 같은 많은 단점이 있습니다.
- 데이터베이스가 작동하지 않으면 어떻게 되나요? (파일 시스템은 기본 구성 요소입니다(관계형 데이터베이스보다 훨씬 간단하다고 언급했습니까?). syslog 데몬은 한 가지 작업(Unix 디자인의 일반적인 기능)만 수행하는 간단한 구성 요소이므로 기대됩니다. 잘 수행되고 안정적입니다. ).
- 데이터베이스 작업을 기록하는 방법은 무엇입니까? (글쎄요, 데이터베이스 자체를 통해 - 모든 로그에는 커널과 syslog 데몬의 항목이 포함되어 있지만, 다시 한번 더 복잡한 데이터베이스로 인해 이 작업이 더 어렵고 신뢰할 수 없게 됩니다.)
- 로그 항목에 어떻게 액세스하나요?
cat
,grep
을less
SQL 쿼리의 단순성과 비교해 보세요 . 파일 권한, 음, 일반적인 관계형 데이터베이스에서 이를 처리하는 방법을 모르겠습니다. - 다중 서버 설치는 로그를 로컬에 저장하지 않고 대신 Unix 탄생 이후 syslog 데몬에 내장된 원격 로깅 기능을 사용합니다. 이는 UNIX 로깅 아키텍처를 사용하면 쉽게 달성할 수 있습니다. 복잡한 예산으로는 복제 데이터베이스를 실행할 수 없습니다.
답변4
이렇게 하면 "tail -f /var/log/apache/access.log"와 같은 작업이 불가능해집니다.
왜 모든 것을 하나의 파일에 넣는 것이 더 낫다고 생각합니까?