Debug logging in Content SDK apps

Sitecore Content SDK NPM packages and sample applications use the debug module for displaying debugging information.

This module exposes the debug() function, an augmented version of console.log(). Unlike console.log(), you don't have to comment or remove debug() calls in production code, which means you can easily configure debug logs in production using environment variables, as needed.

All Content SDK logs are organized under the root namespace content-sdk. Logging is turned off by default, but it can be conditionally enabled using the DEBUG environment variable. There are also several related environment variables that you can use to further configure the content and appearance of debug logs.

When logging is enabled and you run your application, for example with npm run start:production, all triggered instances of debug() relevant to the namespaces you choose to include will be displayed in your console.

Note

The debug logs only include server-side code, so there is no reason to enable debug logging in the browser.

To output all available debug logs, set the DEBUG environment variable to content-sdk:*. The asterisk behaves as a wildcard.

RequestResponse
DEBUG=content-sdk:*

You can use namespaces to selectively show a specific category of log messages, for example, layout service logs.

RequestResponse
DEBUG=content-sdk:layout

To include more than one specific log namespace, you can write the namespaces in a comma-separated list. The following example will cause debug logs to only include layout and dictionary service logs:

RequestResponse
DEBUG=content-sdk:layout,content-sdk:dictionary

To include everything except for specific logs, you can follow the wildcard namespace with a comma-separated list of namespaces that you want to exclude. In the following example, the logs will return everything except for layout service logs, which are excluded due to the - prefix:

RequestResponse
DEBUG=content-sdk:*,-content-sdk:layout

Namespaces

The following table lists all the namespaces available for debug logging in Content SDK apps.

Namespace

Description

content-sdk:http

HTTP request and response logging for default fetch wrappers.

content-sdk:dictionary

Trace logging for the dictionary service.

content-sdk:layout

Trace logging for the layout service.

content-sdk:editing

Trace logging for SitecoreAI editor integration.

content-sdk:sitemap

Trace logging for the sitemap service.

content-sdk:robots

Trace logging for the robots.txt service.

content-sdk:redirects

Trace logging for the core redirects service and the nextjs redirects middleware.

content-sdk:errorpages

Trace logging for the error pages service.

content-sdk:multisite

Trace logging for the site info service and Next.js multisite middleware.

content-sdk:personalize

Trace logging for the personalize service and Next.js personalize middleware.

content-sdk:common

Common logging messages used throughout the application.

content-sdk:search

Trace logging for the search service.

Advanced options

When using Node.js, you can change the behavior of debug logging by using any of the following optional environment variables:

Name

Description

DEBUG_HIDE_DATE

boolean

Whether to hide dates from debug output (non-TTY only).

default: false

DEBUG_COLORS

boolean

Whether to use colors in the debug output.

default: true

DEBUG_DEPTH

number

The object inspection depth.

default: 2

DEBUG_MULTILINE

boolean

Whether to pretty-print inspected objects on multiple lines. If not, they are displayed on a single line.

default: false

DEBUG_SHOW_HIDDEN

boolean

Whether to show hidden properties on inspected objects.

default: false

Do you have some feedback for us?

If you have suggestions for improving this article,