Accessing and Using Roku Logs

Consider the following items when working with Roku logs.

Roku Channel Logs

Print statements from a side-loaded Roku client can be viewed on a BrightScript console that is accessed with:

telnet <roku-device IP> 8085

Roku Debug Server Logs

The Roku debug server on port 8080 offers additional debug commands (for example, fps_display, bitmap usage, and so on). See Roku Developer Documentation.

Adding Roku Client Logs

To add a client log in BrightScript, use a format such as:

logMessage("My test passed") logMessage("getGeoCheck - request: " + url)

Forwarding Server Logs to a BrightScript Console

Server logs can be forwarded to the same BrightScript console (telnet session) by adding the following entry into the client manifest file:

enable_server_logging=true

Logs appear as logString commands such as:

[2018-03-13 21:01:29.113Z] TCP CLIENT - command queued: {"command":"logString","arguments":{"log":" I/ViperApp: Network Connected."},"sequence":670747791922}

Forwarding Client Logs to the App Server Console

When running a packaged channel (private or public), RokuOS does not emit client logs to the telnet channel.

The client logs can be forwarded to the app server by adding the following entry into the channel manifest:

enable_client_log_forwarding=true

Logs appear in the server’s console output (either the local server or the AWS cloud watch) preceded by: ClientLog.

Recording Client-Server Messages

You can enable and disable the recording of messages between the server and the client by using a Dev Panel toggle called the Cloud Socket Recorder. The recorded messages are written to a file named recording<n>.json that’s in the same folder as the application executable (e.g., build/osx/Debug/recording0.json). The “< n >” suffix of the filename is a number that starts at 0 when the app is started, and is incremented each time the recording is enabled while the server is running.

When the recording is first enabled, the recording0.json file collects the messages until the recording is disabled. If the recording is re-enabled while the app is running, the recording1.json file will be created, and so on.