从功能中排除日志记录

时间:2016-04-19 10:15:05

标签: c++ logging

我多次遇到过这个问题。是否有一种“智能”方法可以从函数中排除日志记录?特别是如果在记录发生之前存在逻辑检查(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 ++中是可能的吗?也许甚至是一个应该尽可能整齐的单独记录类?

1 个答案:

答案 0 :(得分:0)

日志记录行必须是您要记录的位置。没有办法解决这个问题。

也就是说,通常最好有一个可以在生产中取消激活的记录宏,this article解释了如何做(使用完整的代码)