현재 C++ 응용 프로그램 리팩토링 중입니다. 내가C++로 사용자 정의 로깅하는 방법
같은 매크로를 사용하기 전에LOG("something interesting") // 1
LOG("something ended") // 2
LOG("foo: " << bar) // 3
내 생각은 그래서 지금 같은 Log
클래스 작성했다 : 그들은 시작할 때
Log(std::string _init_message):
init_message(_init_message)
{ PrintLogLine(init_message + " ...");}
~Log()
{ PrintLogLine(init_message + " done.");}
특정 작업 (의 "자동"로깅을 얻기를, 즉 + 추가 중지 타이밍 등) 내가)이 경우 3 작동하게하는 방법을 정의하는 것입니다 고군분투
void ActionXYZ() {
Log log("xyz");
// do stuff
}
처럼 사용하는 경우. Java에서는 컴파일러가 자동으로 문자열 작성을 담당하므로 하나의 String
인수를 취하는 메소드를 사용할 수 있습니다. C++에서 어떤 가능성이 있습니까?
하나의 옵션처럼 사용할 수 있도록 작동시킬 수 있습니까?
// in "do stuff"
log("foo:" + bar); // OR
log << "foo:" << bar;
또는 Boost.Format. –
이미 첫 번째 옵션을 시도했지만 적용 가능성은 제한적으로 보입니다. 이'log (std :: string ("foo :") + 2 + "units");은 컴파일하지 않습니다 ... – dcn
@dcn, 원래 질문에서 언급 했어야합니다. –