varargs에 일부 값 (char *)이 포함되어 있는지 확인하는 간단한 API가 있습니까?C++ varargs가 포함되어 있는지 확인하십시오.
단순한 API가 없다면 args를 계산하지 않고 어떻게 반복해야합니까?
내 방법은 구성 IP에서 로그 기반을 필터링 할 수 있어야하므로 args 중 하나가 10.3.2.2 (일부 구성 IP)인지 확인해야합니다.
void Logger::Log(const char *format, ...) {
lock_guard<mutex> guard(mtx_);
if (!file_) {
file_ = fopen("application.log", "w");
}
time_t current = time(0);
tm *ptm = localtime(¤t);
stringstream ss;
ss << "\n[" << ptm->tm_min << ":" << ptm->tm_sec << "]";
fprintf(file_, ss.str().data());
va_list argptr;
va_start(argptr, format);
vfprintf(file_, format, argptr);
va_end(argptr);
fflush(file_);
}
주어진 인수의 길이와 유형의 반복 만이 lesson에 표시를 찾고 있습니다. 형식이며 검사 포함이 고가이며 로거가 고성능 요구 사항을 지원할 수 있어야합니다.
내 목표는 간단한 로거 방법을 구현하는 것입니다. 그래서 당신은 이것을 다음과 같이 부를 것이다 :
Log("trafic from ip %s to ip %s", "10.1.1.1","1.1.1.1")
그리고 많은 다른 호출. 필터에서 매개 변수 값 중 하나가 "10.1.1.1"(예 :)인지 확인하고 싶지 않으므로 기록하지 마십시오.
아니요, C++에서는이 작업을 수행하는 것이 없습니다. – tenfour
레슨에서 길이 만 주어지면 반복하는 것입니다. 이 예에서는 모든 매개 변수가 두 배로 지정되었습니다.당신은 인수의 유형과 길이가 필요합니다. 이것은 귀하의 경우 큰 문제입니다. –
@DavidSchwartz 당신이 정확합니다. 나는 심지어 길이가 없다는 것을 의미한다. –