轉(zhuǎn)載自:http://blog.sina.com.cn/s/blog_7ec2ab360102wx5z.html
export NS_LOG="MpTcpCrypto:MpTcpFullMesh:MpTcpMapping:MpTcpNdiffPorts:MpTcpSchedulerRoundRobin:MpTcpSocketBase:MpTcpSubflow:TcpOptionMpTcp:TcpSocketBase:TcpTxBuffer"
export NS_LOG="MpTcpHeader:MpTcpL4Protocol:MpTcpSocketBase:MpTcpTypeDefs:MpTcpPacketSink:TcpRxBuffer:TcpTxBuffer:TcpSocketBase:FirstMultipathToplogy"
NS3中的日志信息默認(rèn)是輸出到terminal的,可以采用以下方法將信息重定向到文件中。
./waf --run scratch/myprogram>& log.out
LOG_ERROR— Log error messages (associated macro: NS_LOG_ERROR);
LOG_WARN— Log warning messages (associated macro: NS_LOG_WARN);
LOG_DEBUG— Log relatively rare, ad-hoc debugging messages (associated macro: NS_LOG_DEBUG);
LOG_INFO— Log informational messages about program progress (associated macro: NS_LOG_INFO);
LOG_FUNCTION— Log a message describing each function called (two associated macros: NS_LOG_FUNCTION, used for member functions, and NS_LOG_FUNCTION_NOARGS, used for static functions);
LOG_LOGIC– Log messages describing logical flow within a function (associated macro: NS_LOG_LOGIC);
LOG_ALL— Log everything mentioned above (no associated macro)
在仿真過(guò)程中發(fā)生了很多你所沒(méi)有看到的事情■昙模現(xiàn)在可以很容易的打開(kāi)系統(tǒng)的日志組件屿脐,察看整個(gè)過(guò)程了。現(xiàn)在試著設(shè)置NS_LOG變量為:
$ export 'NS_LOG=*=level_all|prefix_func|prefix_time'?//*是日志組件通配符歉糜,這將打開(kāi)仿真過(guò)程中使用的所有日志乘寒。
可以將這些信息重定向到一個(gè)文件,并且用自己喜歡的編輯器打開(kāi)查看匪补。
$ ./waf --run scratch/first>log.out 2>&1?//重定向到log.out文件中伞辛。 2>$1表示將一個(gè)標(biāo)準(zhǔn)錯(cuò)誤輸出重定向到標(biāo)準(zhǔn)輸出。
可以通過(guò)幾個(gè)宏調(diào)用日志組件給仿真增加新的日志功能夯缺。
例如在first.cc中,我們已經(jīng)定義了一個(gè)組件:
NS_LOG_COMPONENT_DEFINE("FirstScriptExample");
我們已經(jīng)了解了通過(guò)設(shè)置NS_LOG環(huán)境變量來(lái)給組件啟用日志功能蚤氏。我們可以給腳本增加一些日志功能。用來(lái)增加信息級(jí)別的日志消息的宏是NS_LOG_INFO踊兜。
現(xiàn)在我們來(lái)增加一個(gè)日志消息瞧捌,顯示本腳本在“創(chuàng)建拓?fù)洹保?/p>
打開(kāi)scratch/first.cc文件并且在
NodeContainer nodes;
nodes,Create(2);
之前加上一行:
NS_LOG_INFO ("Creating Topology");
用waf編譯腳本并且清楚NS_LOG環(huán)境變量,來(lái)關(guān)掉之前啟用的日志文件
$ ./waf
$ export NS_LOG=
然后運(yùn)行腳本润文,但是看不到新的日志消息姐呐,那是因?yàn)榕c它相關(guān)的日志組件(FirstScriptExample)沒(méi)有被啟用。為了看到該日志的消息典蝌,必須使用大于或等于NS_LOG_INFO的日志級(jí)別來(lái)啟用FirstScriptExample日志組件曙砂。如果只是想要看某個(gè)級(jí)別的日志,你可以通過(guò)下面的語(yǔ)句來(lái)啟用它骏掀,
$ export NS_LOG=FirstScriptExample=info
再運(yùn)行腳本鸠澈,可以看到“Creating Topology”的日志消息。