# NSPR_LOG_MODULES

This environment variable specifies which log modules have logging
enabled.

## Syntax

```
moduleName:level[, moduleName:level]*
```

*moduleName* is the name specified in a
`` :ref:`PR_NewLogModule `` \<<http://www-archive.mozilla.org/projects/nspr/reference/html/prlog.html#25372>>\`\_\_
call or one of the handy magic names listed below.

*level* is a numeric value between 0 and 5, with the values having the
following meanings:

- 0 = PR_LOG_NONE: nothing should be logged
- 1 = PR_LOG_ALWAYS: important; intended to always be logged
- 2 = PR_LOG_ERROR: errors
- 3 = PR_LOG_WARNING: warnings
- 4 = PR_LOG_DEBUG: debug messages, notices
- 5: everything!

## Description

Specify a `moduleName` that is associated with the `name` argument
in a call to
`` :ref:`PR_NewLogModule `` \<<http://www-archive.mozilla.org/projects/nspr/reference/html/prlog.html#25372>>\`\_\_
and a non-zero `level` value to enable logging for the named
`moduleName`.

Special log module names are provided for controlling NSPR's log service
at execution time. These controls should be set in the
{ref}`NSPR_LOG_MODULES` environment variable at execution time to affect
NSPR's log service for your application.

- **all** The name `all` enables all log modules. To enable all log
  module calls to
  `` `PR_LOG `` \<<http://www-archive.mozilla.org/projects/nspr/reference/html/prlog.html#25497>>\`\_\_,
  set the variable as follows:

  ```
  set NSPR_LOG_MODULES=all:5
  ```

- **timestamp** Including `timestamp` results in a timestamp of the
  form "2015-01-15 21:24:26.049906 UTC - " prefixing every logged line.

- **append** Including `append` results in log entries being appended
  to the existing contents of the file referenced by NSPR_LOG_FILE. If
  not specified, the existing contents of NSPR_LOG_FILE will be lost as
  a new file is created with the same filename.

- **sync** The name `sync` enables unbuffered logging. This ensures
  that all log messages are flushed to the operating system as they are
  written, but may slow the program down.

- **bufsize:size** The name `bufsize:`*size* sets the log buffer to
  *size*.

## Examples

Log everything from the Toolkit::Storage component that happens,
prefixing each line with the timestamp when it was logged to the file
/tmp/foo.log (which will be replaced each time the executable is run).

```
set NSPR_LOG_MODULES=timestamp,mozStorage:5
set NSPR_LOG_FILE=/tmp/foo.log
```

(logging-with-try-server)=

## Logging with Try Server

- For **mochitest**, edit variable {ref}`NSPR_LOG_MODULES` in
  `testing/mochitest/runtests.py` before pushing to try. You would be
  able to download the log file as an artifact from the Log viewer.
- (other tests?)
