Page Contents

You can specify debug strings when you run an application, as explained below, to display specific log output to the console. You can also redirect the output to a file, if desired. These techniques are often helpful in debugging applications.

Using debug strings

LoopBack has a number of built-in debug strings to help with debugging. Specify a string on the command-line via an environment variable as follows:

MacOS and Linux

$ DEBUG=<pattern>[,<pattern>...] npm start

Windows

C:\> set DEBUG=<pattern>[,<pattern>...]
C:\> npm start

where <pattern> is a string-matching pattern specifying debug strings to match. You can specify as many matching patterns as you wish.

For example (MacOS and Linux):

$ DEBUG=loopback:datasource npm start

Or, on Windows:

C:\> set DEBUG=loopback:datasource
C:\> npm start

You’ll see output such as (truncated for brevity):

loopback:datasource Settings: {"name":"db","debug":true} -0ms
loopback:datasource Settings: {"name":"geo","connector":"rest",...

You can use an asterisk  (*) in the pattern to match any string. For example the following would match any debug string containing “oracle”:

$ DEBUG=*oracle npm start

You can also exclude specific debuggers by prefixing them with a “-“ character. For example, DEBUG=*,-rest-crud:* would include all debuggers except those starting with “rest-crud:”.

Debug string format

These strings have the format

module[:area]:string

Where:

  • module is the name of the module, for example loopback or loopback-connector-mongodb.
  • area is an optional identifier such as cli or repository to identify the purpose of the module
  • string is the debug string specified in the target TypeScript/JavaScript source file, such as application.ts.

For example:

loopback:cli:model-generator

The debug string model-generator is specified in the source file  generators/model/index.js of the @loopback/cli module.

Debug strings reference

Module Source file String
@loopback
@loopback/authorization src/authorize-interceptor.ts loopback:authorization:interceptor
@loopback/boot src/bootstrapper.ts loopback:boot:bootstrapper
src/booters/interceptor.booter.ts loopback:boot:interceptor-booter
src/booters/lifecycle-observer.booter.ts loopback:boot:lifecycle-observer-booter
src/booters/model-api.booter.ts loopback:boot:model-api
src/booters/service.booter.ts loopback:boot:service-booter
@loopback/booter-lb3app src/lb3app.booter.ts loopback:boot:lb3app
@loopback/cron src/cron.component.ts loopback:cron
@loopback/rest-crud src/crud-rest-builder.ts loopback:boot:crud-rest
@loopback/cli please check each generator loopback:cli:_string_
@loopback/context src/interceptor.ts loopback:context:interceptor
src/binding.ts loopback:context:binding
src/context-view.ts loopback:context:view
src/invocation.ts loopback:context:invocation
src/interceptor-chain.ts loopback:context:interceptor-chain
@loopback/http-caching-proxy src/http-caching-proxy.ts loopback:http-caching-proxy
@loopback/core src/lifecycle-registry.ts loopback:core:lifecycle
src/application.ts loopback:core:application
@loopback/openapi-v3 src/* loopback:openapi
@loopback/repository src/relations/belongs-to/belongs-to.accessor.ts loopback:repository:relations:belongs-to:accessor
src/relations/belongs-to/belongs-to.accessor.ts loopback:repository:relations:belongs-to:accessor
src/relations/belongs-to/belongs-to.helpers.ts loopback:repository:relations:belongs-to:helpers
src/relations/has-many/has-many.helpers.ts loopback:repository:relations:has-many:helpers
src/relations/has-many/has-many.inclusion-resolver.ts loopback:repository:relations:has-many:inclusion-resolver
src/relations/has-many/has-many.repository-factory.ts loopback:repository:relations:has-many:repository-factory
src/relations/has-many/has-many-through.helpers.ts loopback:repository:relations:has-many-through:helpers
src/relations/has-many/has-many-through.inclusion-resolver.ts loopback:repository:relations:has-many-through:inclusion-resolver
src/relations/has-one/has-one.helpers.ts loopback:repository:relations:has-one:helpers
src/relations/has-one/has-one.repository-factory.ts loopback:repository:relations:has-one:repository-factory
@loopback/repository-json-schema src/build-schema.ts loopback:repository-json-schema:build-schema
@loopback/rest src/rest-server/ loopback:rest:server
src/sequence.ts loopback:rest:sequence
loopback-datasource-juggler
lib/datasource.js loopback:datasource
Connectors
loopback-connector lib/connector.js loopback:connector
loopback-connector-cassandra lib/cassandra.js loopback:connector:cassandra
loopback-connector-cloudant lib/cloudant.js loopback:connector:cloudant
loopback-connector-couchdb2 lib/couchdb2.js loopback:connector:couchdb2
loopback-connector-dashdb lib/dashdb.js loopback:connector:dashdb
loopback-connector-db2 lib/db2.js loopback:connector:db2
loopback-connector-ibmi lib/ibmiconnector.js loopback:connector:ibmiconnector
loopback-connector-kv-redis lib/kv-redis.js loopback:connector:kv-redis
loopback-connector-mongodb lib/mongodb.js loopback:connector:mongodb
loopback-connector-mssql lib/mssql.js loopback:connector:mssql
loopback-connector-mysql lib/mysql.js loopback:connector:mysql
loopback-connector-oracle lib/oracle.js loopback:connector:oracle
loopback-connector-postgresql lib/postgresql.js loopback:connector:postgresql
loopback-connector-rest lib/rest-builder.js loopback:connector:rest
lib/rest-connector.js loopback:connector:rest
lib/rest-model.js loopback:connector:rest
lib/swagger-client.js loopback:connector:rest:swagger
loopback-connector-soap lib/soap-connector.js loopback:connector:soap

Adding debugs

As seen before, LoopBack has built-in debug strings to help with debugging.

LoopBack uses the debug package internally. Even if there’s no mandate for LoopBack users to use the same library, you can use this package in your application to help with debugging.

To do so, you can define your own debug strings like demonstrated in this example:

// Import from debug
import debugFactory from 'debug';

// Define your custom debug string
const debug = debugFactory('example:debug:factory');

// Use it in your code
debug('Oops there was an error!');

To debug parts of your app with this custom debug string, you can run:

DEBUG=example:debug:factory npm start

Refer to the debug documentation for more information.