我多次遇到过这个问题。是否有一种“智能”方法可以从函数中排除日志记录?特别是如果在记录发生之前存在逻辑检查(if / else)。如果/其他也被排除在外我想要这个。例如:
Return_Value = Init_Winsock();
if( Return_Value != 0 )
{
cout << "(" << __FILENAME__ << ":" << __LINE__ << "): ";
Errorcode_To_String( __FUNCTION__ );
}
else
{
cout << "(" << __FILENAME__ << ":" << __LINE__
<< "): " << "INFO: winsocked started" << endl;
}
Socket = socket( AF_INET,
SOCK_DGRAM,
0 );
if( Socket == INVALID_SOCKET )
{
cout << "(" << __FILENAME__ << ":" << __LINE__ << "): ";
Errorcode_To_String( __FUNCTION__ );
}
else
{
cout << "(" << __FILENAME__ << ":" << __LINE__
<< "): INFO: UDP socket opened" << endl;
}
我想将两个if / else放在一个单独的函数中,最好是在一个函数中。这样的东西在c ++中是可能的吗?也许甚至是一个应该尽可能整齐的单独记录类?
答案 0 :(得分:0)
日志记录行必须是您要记录的位置。没有办法解决这个问题。
也就是说,通常最好有一个可以在生产中取消激活的记录宏,this article解释了如何做(使用完整的代码)