NS3-logging 日志模块的使用

NS3-logging 日志模块的使用


NS3的消息日志功能可以用来监控或调试仿真程序执行的过程。日志输出可以在main()函数里通过相关程序来启用,也可以通过NS_LOG环境变量来使能。

NS3提供了一个可供选择的、多级别的方法来记录日志。日志可以完全被禁用,或仅对某个部分组件可用,或全局可用。NS3还提供了不同详尽程度的日志级别供选。NS-3日志模块提供了直观的、相对简单的使用方法来帮助用户获得仿真过程的所需信息。日志应当作为快速获得你的脚本和模型的调试信息、警告信息、错误信息、或是其他信息的首要选择。

在现有的系统中,有7个详尽程度递增的日志级别,他们分别是:

  • NS_LOG_ERROR — 记录错误信息;
  • NS_LOG_WARN — 记录警告信息;
  • NS_LOG_DEBUG — 记录相对不常见的调试信息;
  • NS_LOG_INFO — 记录程序进展信息;
  • NS_LOG_FUNCTION — 记录描述每个调用函数信息;
  • NS_LOG_LOGIC – 记录一个函数内描述逻辑流程的信息;
  • NS_LOG_ALL — 记录所有信息.

每一个级别能够被单独地被调用或逐级递增地被调用,从上到下,级别依次增高。当我们使用一个日志级别标志时,我们实际上打开了这个日志级别和比它低的所有级别。比如,如果我们打开的日志级别是NS_LOG_INFO,那么我们我们就可以得到程序进展信息、调试信息、警告信息以及错误信息。

下面简单介绍logging在程序中的使用:
  • NS_LOG_COMPONENT_DEFINE (“FirstScriptExample”); // 定义一个日志组件,常见于程序开头部分。

  • LogComponentEnable(“UdpEchoClientApplication”, LOG_LEVEL_INFO); // 对UdpEchoClientApplication组件启用日志,日志级别设置为LOG_LEVEL_INFO。

下面简单介绍logging在shell中配置环境时的使用:
  • export NS_LOG=UdpEchoClientApplication=level_all
    在不改变脚本或重新编译的情况下,通过设置NS_LOG环境变量来增加日志级别。环境变量NS_LOG设置为:UdpEchoClientApplication=level_all,等号左边是我们想要设置日志级别的组件的名字,等号右边是我们想要使用的日志级别。这样就为之后的程序运行打开所有的调试信息级别。

  • export ‘NS_LOG=UdpEchoClientApplication=level_all|prefix_func’
    通过在NS_LOG环境变量中设置prefix_func级别来进一步查看某条信息来自哪个函数或程序。这样设置,你就可以看到每条日志都有产生此条日志的组件名做前缀了。
    注意:这里引号是必须的,因为我们用的竖线表示或操作,而在Unix中竖线表示管道连接。

  • export ‘NS_LOG=UdpEchoClientApplication=level_all|prefix_func:
    UdpEchoServerApplication=level_all|prefix_func’
    通过在NS_LOG环境变量中键入一个单冒号隔开的组件列表来启用回显服务器应用组件。
    注意:单冒号后不能有换行符,此处仅仅只是为了编排格式。

  • export ‘NS_LOG=UdpEchoClientApplication=level_all|prefix_func|prefix_time:
    UdpEchoServerApplication=level_all|prefix_func|prefix_time’
    通过使用prefix_time位来显示日志生成的仿真时间。

  • export ‘NS_LOG=*=level_all|prefix_func|prefix_time’
    上面的星号是日志组件通配符,将打开在仿真过程中使用的所有组件的日志功能。使用下面的命令可以把产生的信息导入一个文件中:
    ./waf –run scratch/myfirst > log.out 2>&1.

  • export NS_LOG=
    清除NS_LOG环境变量来关掉我们之前启用的日志文件。

  • export NS_LOG=FirstScriptExample=info
    对于FirstScriptExample这个程序,只显示NS_LOG_INFO级别的日志。

关于NS3的logging功能,Tutorial的作者是这样说的:

I personally use this extremely verbose version of logging when I am presented with a problem and I have no idea where things are going wrong. I can follow the progress of the code quite easily without having to set breakpoints and step through code in a debugger. I can just edit up the output in my favorite editor and search around for things I expect, and see things happening that I don’t expect. When I have a general idea about what is going wrong, I transition into a debugger for a fine-grained examination of the problem. This kind of output can be especially useful when your script does something completely unexpected. If you are stepping using a debugger you may miss an unexpected excursion completely. Logging the excursion makes it quickly visible.

关于NS3 logging的详细内容,请参考:
  1. ns-3-tutorial
  2. ns-3-manual
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python,可以使用logging模块来记录日志信息,方便程序员在开发和生产环境进行调试和问题排查。logging模块提供了全局配置方法,可以通过配置来控制日志的格式、输出方式和级别等。 下面是一个简单的例子,展示如何使用logging模块进行全局配置: ``` import logging # 配置日志格式 formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') # 创建一个StreamHandler,用于输出到控制台 console_handler = logging.StreamHandler() console_handler.setFormatter(formatter) # 创建一个FileHandler,用于输出到文件 file_handler = logging.FileHandler('example.log') file_handler.setFormatter(formatter) # 创建一个Logger实例 logger = logging.getLogger('example') logger.setLevel(logging.DEBUG) # 将StreamHandler和FileHandler添加到Logger实例 logger.addHandler(console_handler) logger.addHandler(file_handler) ``` 在上面的例子,首先创建了一个Formatter对象,用于配置日志的格式。然后,创建了一个StreamHandler和FileHandler,分别用于将日志输出到控制台和文件。接下来,创建了一个Logger实例,并设置了日志级别为DEBUG。最后,将StreamHandler和FileHandler添加到Logger实例。 通过全局配置,可以方便地控制日志的输出方式和级别。在程序,只需要使用logger对象来记录日志即可,例如: ``` logger.debug('debug message') logger.info('info message') logger.warning('warning message') logger.error('error message') logger.critical('critical message') ``` 通过上述配置,日志信息将输出到控制台和文件,并且可以根据需要调整日志级别。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值