log的简单说明
@(NS3相关)[core][log]
NS3中的日志功能是非常完善与灵活,大家有需要显示一些调试或者警告信息时最好使用log,不再使用标准输入来输出中间信息。
- 头文件:ns3/log.h
- v2g/model中对应的cc文件注册对应的日志组件(一般一个类对应一个日志组件,如EvApp.cc中注册了“EvApp"日志组件
- 注册了日志组件后,就可以在对应的源文件源文件中使用相关的宏写入日志信息。 具体包括:
NS_LOG_ERROR();//写入LOG_LEVEL_ERROR级别的日志信息 NS_LOG_WARN();//写入LOG_LEVEL_WARN级别日志信息 NS_LOG_DEBUG();//写入LOG_LEVEL_DEBUG级别日志信息 NS_LOG_INFO();//写入LOG_LEVEL_INFO级别日志信息 NS_LOG_FUNCTION();//写入LOG_LEVEL_FUNCTION级别日志信息 NS_LOG_LOGIC();//写入LOG_LEVEL_LOGIC级别日志信息
使用这些宏就和使用标准输出一样,非常方便, 需要输出多个变量时,变量间用<<连接。示例如下
int i NS_LOG_DEBUG(i); NS_LOG_DEBUG("Debug log"); NS_LOG_INFO("info log:" << i <<" done");
- 在脚本中使用LogComponentEnable宏来定义日志组件使能级别,即可控制输出信息。使能级别为LOG_LEVEL_INFO时,LOG_LEVEL_INFO以下(包括LOG_LEVEL_INFO)的相关日志信息都会输出。如
//in exam-app.cc void ExamApp::Test() { NS_LOG_ERROR("NS_LOG_ERROR"); NS_LOG_WARN("NS_LOG_WARN"); NS_LOG_DEBUG("NS_LOG_DEBUG"); NS_LOG_INFO("NS_LOG_INFO"); NS_LOG_FUNCTION (this << "NS_LOG_FUNCTION "); NS_LOG_LOGIC("NS_LOG_LOGIC"); std::cout << m_appId << std::endl; } //in test-exam-app.cc #include "ns3/exam-app.h" #include "ns3/log.h" using namespace ns3; int main() { LogComponentEnable ("ExamApp", LOG_LEVEL_FUNCTION); ExamApp a1("EV_1"); a1.Test(); return 0; }
执行main函数,除了"NS_LOG_LOGIC"字符串不会输出外,其他都会输出。