Dev Guide
Dev GuideUser GuideGitHubNuGetDevCommunityDoc feedbackLog In

Logging

This topic describes how to use the SDK's logger in Optimizely Connect Platform (OCP) to assist in the development and debugging of your application.

To assist in the development and debugging, apps can log messages using the SDK's logger. These are only accessible by Optimizely and the app developer, not customers. You must provide customer-facing messages in the notifications interface instead.

You can log messages with one of the following log levels:

  • debug
  • info
  • warning
  • error

The logger should be used in place of the console to ensure that all messages are captured properly. However, as a safety measure for uncontrolled usages in dependencies and more, the app runtime captures console calls and writes the messages with the following log levels:

console functionlogger level
debugdebug
infoinfo
loginfo
warnwarning
errorerror

The logger uses the same mechanism that console.log does to inspect objects passed in as arguments.

SDK

The SDK exposes the logging feature via the logger instance, which can be imported as follows:

import {logger} from '@zaius/app-sdk';

The logger instance follows the SDK's ILogger interface:

export interface ILogger {
  /**
   * Write something to the logs at the Debug level
   * @param args One or more values to log.
   *   Objects are formatted using `util.inspect`, other values are converted to a string.
   *   Multiple values are concatenated with a space between
   */
  debug(...args: any[]): void;

  /**
   * Write something to the logs at the Info level
   * @param args One or more values to log.
   *   Objects are formatted using `util.inspect`, other vaules are converted to a string.
   *   Multiple values are concatenated with a space between
   */
  info(...args: any[]): void;

  /**
   * Write something to the logs at the Warning level
   * @param args One or more values to log.
   *   Objects are formatted using `util.inspect`, other values are converted to a string.
   *   Multiple values are concatenated with a space between
   */
  warn(...args: any[]): void;

  /**
   * Write something to the logs at the Error level
   * @param args One or more values to log.
   *   Objects are formatted using `util.inspect`, other values are converted to a string.
   *   Multiple values are concatenated with a space between
   */
  error(...args: any[]): void;
}

Stack Traces

In order to capture a stack trace, the error must be supplied as a separate argument. For example:

// This will include the stack trace of `e` if it is an error
logger.error('Something went wrong:', e);

// This will NOT include the stack trace
logger.error(`Something went wrong: ${e}`);