developer tip

가장 효율적인 스레드 안전 C ++ 로거는 무엇입니까?

optionbox 2020. 9. 17. 07:41
반응형

가장 효율적인 스레드 안전 C ++ 로거는 무엇입니까? [닫은]


성능이 중요한 다중 스레드 응용 프로그램을 작업 중입니다. rlog, Ace 및 Boost 로깅을 살펴 보았습니다. rlog가 가장 빠르기 때문에 선택했습니다 (로깅이 비활성화되면 오버 헤드가 가장 적음).

내가 가진 문제는 릴리스 모드에서도 파일 이름, 줄 번호 등을 표시한다는 것입니다. 해당 정보를 차단하는 방법을 알려 주시면 문제가 해결 될 수 있습니다. 어쨌든 내 상황에서 C ++에서 가장 효율적인 로거는 무엇입니까?


안타깝게도 지금은 반대 투표를 할 수 없습니다. 내가 말할 수있는 한 Apache log4cxx와 같은 쓰레기를 절대 사용하지 마십시오. 심각한 버그가 포함되어 있습니다.

  1. 0.9 브랜치의 마지막 릴리스는 0.9.7이며 가상 멤버가있는 모든 클래스에는 가상 dtor가 없기 때문에 여전히 메모리 누수가 있습니다.
  2. 최신 릴리스 0.10.x는 0.9.x에서 많은 기능을 잃었으며 이전 버전과 호환되지 않습니다. 자신의 코드를 많이 다시 작성해야합니다.
  3. 전체 프로젝트가 유지되지 않는 것 같습니다. 0.11.xx의 릴리스는 2 년 동안 발표되었습니다.

제 생각에는 부스트를해야합니다.


Pantheios는 최고의있을 것으로 생각된다 라이브러리를 기록 ++ C를 수행 뿐만 아니라, 100 %의 형태 보증 된 유일한 일이라고 주장합니다 ( 이 기사를 왜의 printf () / iostream 기반 라이브러리가없는 타입 - 설명하는 관련 라이브러리에 대해 안전한)


http://logging.apache.org/log4cxx/index.html 에서 log4cxx로 성공했습니다 . 인기있는 Log4j 로거의 C ++ 버전으로 conf 파일이나 코드를 통해 쉽게 구성 할 수 있습니다. 비활성화 된 경우 오버 헤드는 최소화됩니다 (메서드 호출 및 정수 비교).

로그에 대한 출력 패턴은 날짜 / 시간 및 메시지처럼 간단 할 수있는 변환 패턴으로 정의됩니다. 또한 파일 크기 제한, 롤오버 등을 처리합니다. 다양한 오류 및 소스에 대해 다른 패턴을 구성 할 수도 있습니다.


다음은 rlog가 제공하는 추가 정보 (예 : 파일 이름, 줄 번호 등)를 차단하는 방법입니다. main()함수 (또는 모든 위치) 에서 rlog를 초기화 할 때 다음을 수행 할 수 있습니다.

rlog::RLogInit(argc, argv);
rlog::StdioNode slog (2, rlog::StdioNode::OutputColor);
slog.subscribeTo( RLOG_CHANNEL("error") );

두 번째 인수 StdioNode는 플래그가 출력을 제어하는 ​​것입니다. 가능한 플래그의 전체 목록은 rlog 문서 (Doxygen으로 생성 가능)를 확인하십시오. 여기 예제의 하나는 rlog가 다른 정보를 추가하지 않고 심각도에 따라 출력에만 색상을 지정하도록합니다.


로고 시스템을 고려할 수 있습니다. logog는 정확히 이런 종류의 기능을 제공하지만 Pantheios가 가지고있는 암시 적 코드 종속성이 없습니다. logog는 스레드로부터 안전하며 언제 어떤 유형의 메시지가 기록되는지에 대한 높은 수준의 제어를 허용합니다.

저는 logog의 저자이자 관리자이기 때문에 제 의견은 약간 편견이 있습니다. 그러나 이것을 구현하기 전에 rlog, Pantheios 및 기타 로깅 시스템을 검토했습니다.

https://github.com/johnwbyrd/logog .


일부 오버 헤드는 매크로 / 스트림에서 발생할 수 있습니다. 로깅이 비활성화 된 경우 로깅되는 문자열을 구성하지 않도록 매우주의해야합니다.

스트림과? : 연산자를 잘 사용하면 매크로처럼 그렇게 할 수 있습니다.


스레드로부터 안전한지 여부는 모르겠지만 pantheios 일 수도 있습니다
.


Poco는 멋진 로깅 지원을 제공합니다 ...

http://pocoproject.org/slides/110-Logging.pdf


빠르고 안정적이며 스레드로부터 안전한 C / C ++ 언어 용 로그 라이브러리 인 c-log lib, https://github.com/0xmalloc/c-log를 사용해보십시오 .

참고 URL : https://stackoverflow.com/questions/439791/what-is-the-most-efficient-thread-safe-c-logger

반응형