ns3 Tutorial 中的日志模块(翻译)
1 日志模块的使用
1.1 日志概述
- LOG_ERROR — Log error messages (相关的宏:NS_LOG_ERROR);
- LOG_WARN — Log warning messages (相关的宏: NS_LOG_WARN);
- LOG_DEBUG — Log relatively rare, ad-hoc debugging messages (相关的宏: NS_LOG_DEBUG);
- LOG_INFO — Log informational messages about program progress(相关的宏: NS_LOG_INFO);
- LOG_FUNCTION — Log a message describing each function called(两个相关的宏 : NS_LOG_FUNCTION 用于成员函数, NS_LOG_FUNCTION_NOARGS 用于静态函数);
- LOG_LOGIC – Log messages describing logical flow within a function (相关的宏: NS_LOG_LOGIC);
- LOG_ALL — Log everything mentioned above(无相关的宏)。
- NS_LOG_UNCOND – Log the associated message unconditionally(没有相关日志级别)
./war --run scratch/myfirst
Waf: Entering directory `/home/craigdo/repos/ns--allinone/ns--dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns--allinone/ns--dev/build'
'build' finished successfully (.413s)
Sent bytes to 10.1.1.2
Received bytes from 10.1.1.1
Received bytes from 10.1.1.2
上面看到的 "Sent" 和 "Received" 消息实际上是来自 UdpEchoClientApplication 和 UdpEchoServerApplication 的日志消息。我们通过 NS_LOG 环境变量设置日志级别让客户端程序输出更多信息。
假设你在使用一个类 sh 的 shell。此类 shell 使用 “VARIABLE=value” 的语法格式设置环境变量。如果使用类 csh 的 shell,必须将例句改成 "setenv VARIABLE value" 语法格式的语句。
现在,scratch/myfirst.cc 中 UDP 回显客户端应用在使用下面的代码行进行响应,
LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO);
export NS_LOG=UdpEchoClientApplication=level_all
UdpEchoClientApplication=level_all
Waf: Entering directory `/home/craigdo/repos/ns--allinone/ns--dev/build
Waf: Leaving directory `/home/craigdo/repos/ns--allinone/ns--dev/build'
'build' finished successfully (.404s)
UdpEchoClientApplication:UdpEchoClient()
UdpEchoClientApplication:SetDataSize()
UdpEchoClientApplication:StartApplication()
UdpEchoClientApplication:ScheduleTransmit()
UdpEchoClientApplication:Send()
Sent bytes to 10.1.1.2
Received bytes from 10.1.1.1
UdpEchoClientApplication:HandleRead(0x6241e0, 0x624a20)
Received bytes from 10.1.1.2
UdpEchoClientApplication:StopApplication()
UdpEchoClientApplication:DoDispose()
UdpEchoClientApplication:~UdpEchoClient()
这些额外的调试信息是来自 NS_LOG_FUNTION 级别的日志。这些信息显示了在脚本运行期间程序中每个函数调用过程。注意,ns-3 中模型对日志的支持并不是必须的。有关被记录信息的多少是由模型的开发者决定的。在本例中,有很多日志输出。
export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func'
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns--allinone/ns--dev/build'
'build' finished successfully (.417s)
UdpEchoClientApplication:UdpEchoClient()
UdpEchoClientApplication:SetDataSize()
UdpEchoClientApplication:StartApplication()
UdpEchoClientApplication:ScheduleTransmit()
UdpEchoClientApplication:Send()
UdpEchoClientApplication:Send(): Sent bytes to 10.1.1.2
Received bytes from 10.1.1.1
UdpEchoClientApplication:HandleRead(0x6241e0, 0x624a20)
UdpEchoClientApplication:HandleRead(): Received bytes from 10.1.1.2
UdpEchoClientApplication:StopApplication()
UdpEchoClientApplication:DoDispose()
UdpEchoClientApplication:~UdpEchoClient()
export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func:
UdpEchoServerApplication=level_all|prefix_func'
Waf: Entering directory `/home/craigdo/repos/ns--allinone/ns--dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns--allinone/ns--dev/build'
'build' finished successfully (.406s)
UdpEchoServerApplication:UdpEchoServer()
UdpEchoClientApplication:UdpEchoClient()
UdpEchoClientApplication:SetDataSize()
UdpEchoServerApplication:StartApplication()
UdpEchoClientApplication:StartApplication()
UdpEchoClientApplication:ScheduleTransmit()
UdpEchoClientApplication:Send()
UdpEchoClientApplication:Send(): Sent bytes to 10.1.1.2
UdpEchoServerApplication:HandleRead(): Received bytes from 10.1.1.1
UdpEchoServerApplication:HandleRead(): Echoing packet
UdpEchoClientApplication:HandleRead(0x624920, 0x625160)
UdpEchoClientApplication:HandleRead(): Received bytes from 10.1.1.2
UdpEchoServerApplication:StopApplication()
UdpEchoClientApplication:StopApplication()
UdpEchoClientApplication:DoDispose()
UdpEchoServerApplication:DoDispose()
UdpEchoClientApplication:~UdpEchoClient()
UdpEchoServerApplication:~UdpEchoServer()
export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func|prefix_time:
UdpEchoServerApplication=level_all|prefix_func|prefix_time'
Waf: Entering directory `/home/craigdo/repos/ns--allinone/ns--dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns--allinone/ns--dev/build'
'build' finished successfully (.418s)
0s UdpEchoServerApplication:UdpEchoServer()
0s UdpEchoClientApplication:UdpEchoClient()
0s UdpEchoClientApplication:SetDataSize()
1s UdpEchoServerApplication:StartApplication()
2s UdpEchoClientApplication:StartApplication()
2s UdpEchoClientApplication:ScheduleTransmit()
2s UdpEchoClientApplication:Send()
2s UdpEchoClientApplication:Send(): Sent bytes to 10.1.1.2
.00369s UdpEchoServerApplication:HandleRead(): Received bytes from 10.1.1.1
.00369s UdpEchoServerApplication:HandleRead(): Echoing packet
.00737s UdpEchoClientApplication:HandleRead(0x624290, 0x624ad0)
.00737s UdpEchoClientApplication:HandleRead(): Received bytes from 10.1.1.2
10s UdpEchoServerApplication:StopApplication()
10s UdpEchoClientApplication:StopApplication()
UdpEchoClientApplication:DoDispose()
UdpEchoServerApplication:DoDispose()
UdpEchoClientApplication:~UdpEchoClient()
UdpEchoServerApplication:~UdpEchoServer()
export 'NS_LOG=*=level_all|prefix_func|prefix_time'
./waf --run scratch/myfirst > log.out >&
1.3 为你的代码增加日志功能
NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");
NodeContainer nodes; nodes.Create();
NS_LOG_INFO ("Creating Topology");
现在用 waf 编译脚本并且清除 NS_LOG 环境变量来关掉我们之前启用的日志文件:
$ ./waf
$ export NS_LOG=
./waf --run scratch/myfirst
export NS_LOG=FirstScriptExample=info
Waf: Entering directory `/home/craigdo/repos/ns--allinone/ns--dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns--allinone/ns--dev/build'
'build' finished successfully (.404s)
Creating Topology
Sent bytes to 10.1.1.2
Received bytes from 10.1.1.1
Received bytes from 10.1.1.2
ns3 Tutorial 中的日志模块(翻译)的更多相关文章
- Python 中 logging 日志模块在多进程环境下的使用
因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,Python 中 logging 日志模块在多进程环境下的使用 使用 Pytho ...
- python中的日志模块logging
1.日志级别5个: 警告Warning 一般信息Info 调试 Debug 错误Error 致命Critical 2.禁用日志方法 logging.disable(logging.DEBUG) 3 ...
- 在python_request 中 nb-log 日志模块的使用,应用到项目实际使用
一.安装 pip install nb-log pycham 中安装: 二.基本使用 2.1 pycham中调整设置控制台日志打印出的颜色 2.2 设置完成后去掉console弹出的颜色设置 2.3 ...
- Python中logging日志模块的使用
参考https://www.cnblogs.com/CJOKER/p/8295272.html
- Python中的logging模块
http://python.jobbole.com/86887/ 最近修改了项目里的logging相关功能,用到了python标准库里的logging模块,在此做一些记录.主要是从官方文档和stack ...
- Python入门之Python中的logging模块
基本用法 下面的代码展示了logging最基本的用法. import logging import sys # 获取logger实例,如果参数为空则返回root logger logger = log ...
- python的logging日志模块(一)
最近修改了项目里的logging相关功能,用到了Python标准库里的logging模块,在此做一些记录.主要是从官方文档和stackoverflow上查询到的一些内容. 官方文档 技术博客 基本用法 ...
- mybaits源码分析--日志模块(四)
一.日志模块 首先日志在我们开发过程中占据了一个非常重要的地位,是开发和运维管理之间的桥梁,在Java中的日志框架也非常多,Log4j,Log4j2,Apache Commons Log,java.u ...
- 第十七周翻译-SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志
SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志 作者:Tony Davis,2012/01/27 翻译:赖慧芳 译文: 该系列 本文是Stairway系列的一部分:SQL ...
随机推荐
- Bootstrap 轮播插件
一.轮播 //基本实例. <div id="myCarousel" class="carousel slide"> <ol class=&qu ...
- 【Algorithms】归并排序(merge sort)
几个比较常见的排序算法里头,这个我是比较生疏的一个,有一天突然被问了一个问题是,归并排序最大的特点是什么,我才想起这个算法来.下午又看不进书啦,就实现一下,记下来. 归并排序采取的是分治策略,就是先将 ...
- vim - multiple windows
https://www.cs.oberlin.edu/~kuperman/help/vim/windows.html
- MVC中的模型
为MVC Music Store 建模 建模代码: public class Album { public virtual int AlbumId { get; set; } public virtu ...
- DNS分别在什么情况下使用UDP和TCP
DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类.但很少有人知道DNS分别在什么情况下使用这两种协议. 如果用wiresha ...
- Postgres Plus Advanced Server installation
# setenforce Permissive # ./ppasmeta-9.3.1.3-linux-x64.run --mode text Installation Directory [/opt/ ...
- VS2010 支持 CSS3
在安装Standards Update for VS2010 SP1后,VS2010中没有CSS3.0问题,以下是我的解决方法 1.首先去官网下载 CSS 3 Intellisense Schema ...
- VBA 操作 Excel 生成日期及星期
直接上代码~~ 1. 在一个 Excel 生成当月或当年指定月份的日期及星期 ' 获取星期的显示 Function disp(i As Integer) Select Case i disp = & ...
- 芯航线FPGA学习套件之4*4矩阵键盘模块测试手册
芯航线FPGA学习套件之4*4矩阵键盘模块测试手册 本手册以简明扼要的方式介绍芯航线FPGA学习套件提供的矩阵键盘模块的测试方法: 连接开发板,如下所示: 2.将矩阵键盘模块与开发板按如下图所 ...
- c#下载网页源码的两种方法
1.WebClient: System.Net.WebClient wc = new System.Net.WebClient(); Byte[] pageData = wc.DownloadData ...