멀티 스레드 환경에서 함수를 호출 할 때 정수 하나만 로깅한다고 가정하면이 메커니즘을 구현하는 데 가장 좋은 디자인은 무엇입니까? 예 :매우 적은 양의 데이터를 기록하는 가장 효율적인 방법은 무엇입니까?
void foo1() {
log(1);
...
}
void foo2() {
log(2);
...
}
다음은 가능한 방법은 다음과 같습니다
- 단순히
fprintf()
를 사용하여 파일에 로그인합니다. 문제 : 함수를 호출하여 정수 1을 기록하는 것은 비용이 많이 드는 작업이 아닙니까? 내가 틀렸다면 나를 바로 잡아라. - 기록 된 정수를 배열 버퍼에 저장합니다. 주기적으로 파일로 플러시합니다. 문제 : 스레드가 충돌하면 프로세스가 모든 스레드를 중지합니다. 아마도 마지막 로그 정보가 많이 풀릴 수 있습니다.
효율적인 로깅 메커니즘에 대한 더 이상의 제안은 없습니까?
오픈 소스 로깅 프레임 워크를 사용하지 않는 특별한 이유는 무엇입니까? –
먼저 로그 파일에 대한 액세스를 동기화하는 것에 대해 걱정해야합니다. 이는 성능보다 더 큰 문제 일 수 있습니다. –
@Als를 백업하려면 다음과 같이 사용하거나 사용할 수있는 C++ 로깅 프레임 워크 목록을 작성하십시오. http://stackoverflow.com/questions/696321/best-logging-framework-for-native-c –