[翻译] Gecko日志记录

原文链接:Gecko_Logging

Gecko核心代码提供了一个基础的C++日志记录框架。所有构建 (Debug、Release)默认开启,线程安全,是NSPR日志记录的首选。

日志记录框架

声明日志模块

LazyLogModule以线程安全的方式推迟创建后台LogModule,并且是声明日志模块的首选方法。

#include "mozilla/Logging.h"

static mozilla::LazyLogModule sFooLog("foo");

提供了2个宏和1个枚举类做为基本接口

Mozilla日志记录宏
MOZ_LOG(module, level, message)

输出指定信息,如果模块日志级别允许。

  • module - 要使用的日志模块
  • level - 消息的日志输出级别
  • message - 要输出的printf样式消息。必须括在括号中
MOZ_LOG_TEST(module, level)

检查模块是否开启相应的日志输出级别。

  • module - 要使用的日志模块
  • level - 日志输出级别
Mozilla日志级别
日志级别数值作用
Disabled0表示日志记录已禁用。这不应该直接在代码中使用。
Error1发生错误,通常你会考虑在调试生成中断言。
Warning2警告通常表示意外状态。
Info3通常指示当前程序状态。
Debug4调试消息,对调试有用,但过于冗长,无法正常打开。
Verbose5将打印很多有用的调试程序流,并可能会影响性能。

日志记录接口

使用示例

示例代码

#include "mozilla/Logging.h"

using mozilla::LogLevel;

static mozilla::LazyLogModule sLogger("example_logger");

static void DoStuff()
{
  MOZ_LOG(sLogger, LogLevel::Info, ("Doing stuff."));

  int i = 0;
  int start = Time::NowMS();
  MOZ_LOG(sLogger, LogLevel::Debug, ("Starting loop."));
  while (i++ < 10) {
    MOZ_LOG(sLogger, LogLevel::Verbose, ("i = %d", i));
  }

  // Only calculate the elapsed time if the Warning level is enabled.
  if (MOZ_LOG_TEST(sLogger, LogLevel::Warning)) {
    int elapsed = Time::NowMS() - start;
    if (elapsed > 1000) {
      MOZ_LOG(sLogger, LogLevel::Warning, ("Loop took %dms!", elapsed));
    }
  }

  if (i != 10) {
    MOZ_LOG(sLogger, LogLevel::Error, ("i should be 10!"));
  }
}

开启日志输出

模块的日志级别通过在启动应用程序之前设置环境变量来控制。

export MOZ_LOG="example_logger:3"

有一些特殊的模块名可以改变日志行为。除日志级别以外,你可以指定一个或多个特殊模块名称。

模块名
append将新日志附加到现有日志文件。
sync同步打印每个日志,这对于实时检查行为或在崩溃之前获取日志很有用。
timestamp插入时间戳开始每个日志行。
rotate:N这限制了生成的日志文件的大小。仅保存最近的N兆字节的日志数据。我们使用.0,.1,.2,.3扩展名旋转四个日志文件。注意:此选项禁用“附加”和强制的时间戳。


例如,如果要指定“sync”,“timestamp”和“rotate”:

export MOZ_LOG="example_logger:3,timestamp,sync,rotate:10"  

重定向日志到文件

日志输出可以通过环境变量传递其路径来重定向到文件。

默认情况下,日志输出到stderr。

export MOZ_LOG_FILE="log.txt"

上述转储和附加选项仅适用于记录到文件。

E10S注意

当content进程在沙盒中时,它不能写入stderr或任何文件。可能需要将首选项security.sandbox.content.level设置为0才能查看日志。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值