ns3的输入输出奥秘(一) LOGGING系统

1.LOGGING系统

(1)在我们之前对C++的理解,输出好像就是cout,然而

以myfirst.cc为例子

在我们前面的编写的代码中并没有出现cout,那他是如何输出。

可以回忆一下

  LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO);
  LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO);

 这两个语句,使名为"UdpEchoClientApplication"以及"UdpEchoServerApplication"的日志组件生效,并设置级别为LOG_LEVEL_INFO

经过看书《ns-3网络模拟器的基础与应用》了解到 LOGGING系统一共有7个等级由低到高

我们设置的级别越高输出的结果就越详细,一般以我们的需求设置级别。

 

(2)如果想从命令行直接设置我们所需求的级别,则可以通export命令修改我们的NS_LOG环境变量,达到不用修改代码也可以设置我们想要的到输出的详细程度。

export 'NS_LOG=UdpEchoClientApplication=level_all:
               UdpEchoSeverApplication=level_all'

 值得注意的是与上面的区别就是这里level_all是小写,上面代码中则是大写。

 

还可以添加其他的

例如

export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func|prefix_time:
               UdpEchoSeverApplication=level_all|prefix_func|prefix_time'

 prefix_func即可以看到每条信息他所产生的函数是什么;

 prefix_time可以每条信息产生的时间如图

(3)自定义自己的日志组件

之前在myfirst.cc中曾出现这样的语句,向系统注册一个日志组件,名为:FirstScriptExample

NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");

 后面他几乎毫无用处。

接下来我们可以以下代码让他生效

LogComponentEnable("FirstScriptExample",LOG_LEVEL_INFO);

 或者

export 'NS_LOG=FirstScriptExample=level_info'

 在代码中可以添加

NS_LOG_INFO("xxx");

 我们可以用这样的语句来观察输出自己的那一部分的功能开始启动的标志。

 

 

 

posted @ 2016-07-16 23:25  考拉小无  阅读(1907)  评论(0编辑  收藏  举报