Media/WebRTC/Logging

From MozillaWiki
< Media‎ | WebRTC
Jump to: navigation, search

The various pieces of WebRTC do a lot of logging, and these logs can be very helpful to developers when trying to track down problems. This page provides instructions for turning these logging messages on so you can include them in bug reports, etc..

Note about NSPR and MOZ_LOG

NSPR has been deprecated in favor of MOZ_LOG. However, these are two parallel logging systems and some webrtc code still uses NSPR. Before Firefox 54, the MOZ_LOG* variables can not be used to control all webrtc logging (in particular 'signaling' and 'webrtc_trace' can't). From 54 and later, MOZ_LOG can be used for all logging. Note also that MOZ_LOG is case-sensitive, while NSPR_LOG_MODULES is not.

In Firefox 54 and later, you can use about:networking, and select the Logging option, to change MOZ_LOG/MOZ_LOG_FILE options on the fly -- without restarting the browser. Also, you can use about:config and set any log option by adding a "logging.xxxxx" variable (right-click -> New), and set it to an integer value of 0-5.

ICE/STUN/TURN

Set the following environment variables:

Signaling (SDP offer/answer handling)

This uses the normal Mozilla NSPR logging infrastructure, which uses a comma-separated list of modules, each one with its indicated NSPR log level. For WebRTC, you'll be most interested in

  • NSPR_LOG_MODULES=signaling:5,mtransport:5
  • NSPR_LOG_FILE=/path/to/nspr.log (if you don't want the default stderr)

You can also add ",timestamp" to that list if you want each log message to include timestamps. Other options are available as well, and they are detailed under "Description" on the NSPR LOG MODULES MDN page.

getUserMedia and others

To log getUserMedia stuff, use NSPR_LOG_MODULES=MediaManager:4,GetUserMedia:4. For frame-by-frame logging, use MediaManager:5 Camera-specific logging modules: CamerasParent and CamerasChild DOMMediaStreams: MediaStream MediaStreamGraph: MediaStreamGraph GMP (OpenH264): GMP MediaRecorder: MediaRecorder, MediaEncoder, TrackEncoder, VP8TrackEncoder

Media (the GIPS stack: RTP/RTCP)

This also uses the Mozilla logging infrastructure, but it uses a bitmask to select which items are logged, instead of the default log levels. It also logs to a different destination by default.

  • NSPR_LOG_MODULES=webrtc_trace:65535 (in Firefox 54 and later, you need to use levels 1-5, with 5 being the most verbose, equivalent to 65535 in the old way)
  • WEBRTC_TRACE_FILE=/path/to/WebRTC.log (the default is just "WebRTC.log")
    • If WEBRTC_TRACE_FILE=nspr, the logs will be inserted into the NSPR/MOZ logs. Note this may have a major performance impact.

The full list of logging options is found in the TraceLevel enum (see <http://mxr.mozilla.org/mozilla-central/source/media/webrtc/trunk/webrtc/common_types.h#83>).