NSPR 日志记录¶
本章介绍用于执行日志记录的全局函数。NSPR 提供了一组日志记录函数,这些函数将 printf()
样式字符串有条件地写入控制台或日志文件。NSPR 本身也使用此功能进行自身开发调试。
您可以按模块或级别选择要记录的事件。模块是用户定义的一类日志事件。级别是一个数值,指示要记录的事件的严重程度。您可以组合模块和级别条件以获得高度选择性的日志记录。
NSPR 还提供“断言”样式的宏和函数来帮助进行应用程序调试。
条件编译和执行¶
NSPR 的日志记录功能在使用它的应用程序中被有条件地编译和启用。这些控制是平台相关的。Win16 平台未编译日志记录功能。日志记录被编译到 NSPR 调试版本中;日志记录未编译到 NSPR 优化版本中。编译时 #define
值 DEBUG
或 FORCE_PR_LOG
为应用程序程序启用 NSPR 日志记录。
要在应用程序中启用 NSPR 日志记录和/或调试辅助功能,请使用 NSPR 调试版本的头文件和运行时进行编译。在构建应用程序时设置编译时定义之一。
NSPR 日志记录的运行时控制使用两个环境变量。这些变量控制记录哪些模块和级别以及日志文件的名称。默认情况下,在运行时未启用任何日志记录。
日志类型和变量¶
API 中公开了两种支持 NSPR 日志记录的类型
PRLogModuleInfo
两个环境变量控制日志记录在运行时的行为
日志记录函数和宏¶
用于日志记录的函数和宏为
PR_SetLogFile
PR_SetLogBuffering
PR_LogPrint
PR_LogFlush
PR_LOG_TEST
PR_LOG
PR_STATIC_ASSERT(NSPR 4.6.6XXX 中的新增功能,尚未发布;数字是逻辑猜测)
PR_NOT_REACHED
注意
以上文档尚未移植到 MDN,请参见 http://www-archive.mozilla.org/projects/nspr/reference/html/prlog.html#25338。
使用示例¶
以下代码片段演示了日志记录和调试辅助功能的使用。
使用定义 DEBUG 编译程序。
在运行编译后的程序之前,将环境变量 NSPR_LOG_MODULES 设置为 userStuff:5
static void UserLogStuff( void )
{
PRLogModuleInfo *myLM;
PRIntn i;
PR_STATIC_ASSERT(5 > 4); /* NSPR 4.6.6 or newer */
myLM = PR_NewLogModule( "userStuff" );
PR_ASSERT( myLM );
PR_LOG( myLM, PR_LOG_NOTICE, ("Log a Notice %d\n", 999 ));
for (i = 0; i < 10 ; i++ )
{
PR_LOG( myLM, PR_LOG_DEBUG, ("Log Debug number: %d\n", i));
PR_Sleep( 500 );
}
PR_LOG( myLM, PR_LOG_NOTICE, "That's all folks\n");
} /* end UserLogStuff() */