오픈 소스 C++ 응용 프로그램에 기여합니다. 해당 응용 프로그램에서 같은로깅 성능 및 운영자 <<
if (Debug) std::cout << "MyClass | my debug message" << MyExpensiveStringConvertion() << std::endl;
같은 라인으로 수행하는 모든 로깅 나는 그런 그 자동 형식화하는 작업을 수행 어떤 부스트, easylogginppp, 같은 기존의 프레임 워크 중 하나를 사용하여 제안 (다른 언어로) 고급 로깅 프레임 워크를 사용하는 데 사용되는 런타임에 구성 할 수 있습니다.
하지만 "(디버그)이"거의 오버 헤드가 사용을 writting 동안
Log(debug) << "MyClass | my debug message" << MyExpensiveStringConvertion()
가 < < 연산자와 MyExpensiveStringConvertion() 이벤트 로깅의 계산 모두가 필요하다는 응답 하였다는 불가능하다. 이 인수가 맞습니까? 맞으면 우리가 신경 써야합니까? 그렇게 대부분의 로깅 프레임 워크가 그렇게 명백하게 대부분의 개발자가 신경 쓰지 않는 것처럼 보입니다.
업데이트 : (디버그) 양식은 간단한 bool 테스트 만 필요하지만 로깅 프레임 워크는 비용 절감을 위해 모든 종류의 트릭을 구현할 것으로 예상했습니다. Dietmar Kühl이 언급 한 "#define LOG (레벨) if (doDebug (level)) 로그 (레벨)".
'MyExpensiveStringConver [s] ion()'이 (는) 더 많은 인스턴트 메신저로 불려지는 것은 맞습니다. '<<'의 평가보다 더 중요하다. – Ryan
대부분의 로깅 프레임 워크는 쓰레기입니다. 그래서 내가 내 자신의 것을 썼다. – doc
@doc 나도, 비록 내가 적절한 프레임 워크가 이미 처리했을 (예 : 누군가가 프로세스를 복제하고 로그 파일에 고아가 된 핸들을 남겨 두었 기 때문에 로그 롤링이 실패했을 수 있음) 생산 환경에서 성가신 문제가 발생하지만 좋은 메시지라고 생각하는 –