【问题标题】:Exclude logging from function从函数中排除日志记录
【发布时间】:2016-04-19 10:15:05
【问题描述】:

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

【问题讨论】:

  • 请发布一些近似于你想要的东西——即使它不是有效的 c++ 来让人们更好地理解你想要实现的目标。

标签: c++ logging


【解决方案1】:

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

也就是说,通常最好有一个可以在生产中停用的日志记录宏,this article 解释了如何做到这一点(带有完整代码)

【讨论】:

    猜你喜欢
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多