【ns-3】Logging系统

本文介绍了ns-3中的Logging系统,它提供了一种可选的、多等级的消息记录功能。日志组件是管理单位,允许精确到源代码文件。日志详细程度有7个级别,从LOG_ERROR到LOG_ALL,通过NS_LOG_MACRO系列宏控制。此外,日志前缀选项如LOG_PREFIX_FUNC和LOG_PREFIX_TIME帮助识别信息来源和严重性。控制日志输出可以通过LogComponentEnable函数或NS_LOG环境变量实现。

前言

本篇介绍Logging系统。


1. 概述

许多大型系统都会提供一种基于控制台的消息记录功能,用来向用户即时地反馈程序执行情况。ns-3也不例外。ns-3提供了一种可选的、多等级的消息记录功能—Logging系统。Logging功能可以被完全禁用,可以逐个组件启用,也可以全局启用。Logging系统还可以选择所记录消息的详细程度(verbosity level)或严重程度(severity level),以及为消息添加不同的前缀(prefix)。因此,Logging系统提供了一种非常灵活且功能强大,但使用相对简单的消息记录功能 [1] [2]

需要说明的是,Logging系统在ns-3中主要用于:一是通过输出网络组件内部模块执行过程方便用户理解;二是通过输出简单的调试信息方便用户调试,而非收集仿真数据 [3]。ns-3提供了一种收集仿真数据的通用机制—Tracing系统,这是我们收集仿真数据的首选 [2]


2. 基本概念

上面提到,Logging系统提供了一种非常灵活的消息记录功能,不仅可以逐个组件地启用Logging功能,还可以选择所记录消息的详细程度或严重程度,并为消息添加不同的前缀。

因此,在介绍如何使用Logging系统之前,在这一节,我们先介绍日志组件(Log Component)、控制日志输出的详细程度或严重程度选项以及前缀选项等基本概念。

2.1 日志组件

日志组件是Logging系统的最小管理单位。通俗地说,一个日志组件就是指一个C++源代码文件。通过日志组件,Logging系统就可以把信息输出控制精确到某一个C++文件 [1] [4]

而要把一个C++文件添加为日志组件也很容易,只要在C++文件开头在ns3名字空间范围内使用NS_LOG_COMPONENT_DEFINE宏注册即可。日志组件名必须是全局唯一的(通常基于文件名或文件中定义的类的名)。

例如,在first.cc中LogComponentEnable()中的第一个参数即是日志组件名(关于LogComponentEnable函数我们会在后面再介绍),如下图所示:

在这里插入图片描述
UdpEchoClinetApplication日志组件和UdpEchoServerApplication日志组件代表的分别是udp-echo-client.cc文件和udp-echo-server.cc文件,是在各自文件开头在ns3名字空间范围内使用NS_LOG_COMPONENT_DEFINE宏注册的,如下图所示:

在这里插入图片描述
在这里插入图片描述
 

2.2 日志详细程度(严重程度)选项

上面说过,通过日志组件,Logging系统可以把信息输出控制精确到某一个C++文件。而通过日志详细程度(或严重程度)选项,Logging系统可以进一步把信息输出控制精确到某一个C++文件的某一层级。

ns-3中,Logging系统通常提供了7个日志详细程度(或严重程度)选项,输出信息的详细程度由低到高(即输出信息由少到多)或者说信息的严重程度由高到低依次为 [1]

  • LOG_ERROR:记录错误信息(关联的宏为:NS_LOG_ERROR)
  • LOG_WARN:记录警告信息(关联的宏为:NS_LOG_WARN)
  • LOG_DEBUG:记录相对罕见、特别的调试消息(关联的宏为:NS_LOG_DEBUG)
  • LOG_INFO:记录程序进程相关的信息(关联的宏为:NS_LOG_INFO)
  • LOG_FUNCTION:记录描述每个调用函数的消息(关联的宏为:NS_LOG_FUNCTION和NS_LOG_
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值