116 lines
3.5 KiB
ReStructuredText
116 lines
3.5 KiB
ReStructuredText
NSPR Logging
|
|
============
|
|
|
|
This chapter describes the global functions you use to perform logging.
|
|
NSPR provides a set of logging functions that conditionally write
|
|
``printf()`` style strings to the console or to a log file. NSPR uses
|
|
this facility itself for its own development debugging purposes.
|
|
|
|
You can select events to be logged by module or level. A module is a
|
|
user-defined class of log events. A level is a numeric value that
|
|
indicates the seriousness of the event to be logged. You can combine
|
|
module and level criteria to get highly selective logging.
|
|
|
|
NSPR also provides "assert"-style macros and functions to aid in
|
|
application debugging.
|
|
|
|
- `Conditional Compilation and
|
|
Execution <#Conditional_Compilation_and_Execution>`__
|
|
- `Log Types and Variables <#Log_Types_and_Variables>`__
|
|
- `Logging Functions and Macros <#Logging_Functions_and_Macros>`__
|
|
- `Use Example <#Use_Example>`__
|
|
|
|
.. _Conditional_Compilation_and_Execution:
|
|
|
|
Conditional Compilation and Execution
|
|
-------------------------------------
|
|
|
|
NSPR's logging facility is conditionally compiled in and enabled for
|
|
applications using it. These controls are platform dependent. Logging is
|
|
not compiled in for the Win16 platform. Logging is compiled into the
|
|
NSPR debug builds; logging is not compiled into the NSPR optimized
|
|
builds. The compile time ``#define`` values ``DEBUG`` or
|
|
``FORCE_PR_LOG`` enable NSPR logging for application programs.
|
|
|
|
To enable NSPR logging and/or the debugging aids in your application,
|
|
compile using the NSPR debug build headers and runtime. Set one of the
|
|
compile-time defines when you build your application.
|
|
|
|
Execution-time control of NSPR's logging uses two environment variables.
|
|
These variables control which modules and levels are logged as well as
|
|
the file name of the log file. By default, no logging is enabled at
|
|
execution time.
|
|
|
|
.. _Log_Types_and_Variables:
|
|
|
|
Log Types and Variables
|
|
-----------------------
|
|
|
|
Two types supporting NSPR logging are exposed in the API:
|
|
|
|
- :ref:`PRLogModuleInfo`
|
|
- :ref:`PRLogModuleLevel`
|
|
|
|
Two environment variables control the behavior of logging at execution
|
|
time:
|
|
|
|
- :ref:`NSPR_LOG_MODULES`
|
|
- :ref:`NSPR_LOG_FILE`
|
|
|
|
.. _Logging_Functions_and_Macros:
|
|
|
|
Logging Functions and Macros
|
|
----------------------------
|
|
|
|
The functions and macros for logging are:
|
|
|
|
- :ref:`PR_NewLogModule`
|
|
- :ref:`PR_SetLogFile`
|
|
- :ref:`PR_SetLogBuffering`
|
|
- :ref:`PR_LogPrint`
|
|
- :ref:`PR_LogFlush`
|
|
- :ref:`PR_LOG_TEST`
|
|
- :ref:`PR_LOG`
|
|
- :ref:`PR_Assert`
|
|
- :ref:`PR_STATIC_ASSERT` (new in NSPR 4.6.6XXX this hasn't been released
|
|
yet; the number is a logical guess)
|
|
- :ref:`PR_NOT_REACHED`
|
|
|
|
.. note::
|
|
|
|
The above documentation has not been ported to MDN yet, see
|
|
http://www-archive.mozilla.org/projects/nspr/reference/html/prlog.html#25338.
|
|
|
|
.. _Use_Example:
|
|
|
|
Use Example
|
|
-----------
|
|
|
|
The following sample code fragment demonstrates use of the logging and
|
|
debugging aids.
|
|
|
|
- Compile the program with DEBUG defined.
|
|
- Before running the compiled program, set the environment variable
|
|
NSPR_LOG_MODULES to userStuff:5
|
|
|
|
.. code::
|
|
|
|
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() */
|