Express uses the debug module internally to log information about route matches, middleware functions that are in use, application mode, and the flow of the request-response cycle.
debug
is like an augmented version of console.log
, but unlike console.log
, you don’t have to comment out debug
logs in production code. Logging is turned off by default and can be conditionally turned on by using the DEBUG
environment variable.
To see all the internal logs used in Express, set the DEBUG
environment variable to express:*
when launching your app.
$ DEBUG=express:* node index.js
On Windows, use the corresponding command.
> set DEBUG=express:* & node index.js
Running this command on the default app generated by the express generator prints the following output:
$ DEBUG=express:* node ./bin/www express:router:route new / +0ms express:router:layer new / +1ms express:router:route get / +1ms express:router:layer new / +0ms express:router:route new / +1ms express:router:layer new / +0ms express:router:route get / +0ms express:router:layer new / +0ms express:application compile etag weak +1ms express:application compile query parser extended +0ms express:application compile trust proxy false +0ms express:application booting in development mode +1ms express:router use / query +0ms express:router:layer new / +0ms express:router use / expressInit +0ms express:router:layer new / +0ms express:router use / favicon +1ms express:router:layer new / +0ms express:router use / logger +0ms express:router:layer new / +0ms express:router use / jsonParser +0ms express:router:layer new / +1ms express:router use / urlencodedParser +0ms express:router:layer new / +0ms express:router use / cookieParser +0ms express:router:layer new / +0ms express:router use / stylus +90ms express:router:layer new / +0ms express:router use / serveStatic +0ms express:router:layer new / +0ms express:router use / router +0ms express:router:layer new / +1ms express:router use /users router +0ms express:router:layer new /users +0ms express:router use / <anonymous> +0ms express:router:layer new / +0ms express:router use / <anonymous> +0ms express:router:layer new / +0ms express:router use / <anonymous> +0ms express:router:layer new / +0ms
When a request is then made to the app, you will see the logs specified in the Express code:
express:router dispatching GET / +4h express:router query : / +2ms express:router expressInit : / +0ms express:router favicon : / +0ms express:router logger : / +1ms express:router jsonParser : / +0ms express:router urlencodedParser : / +1ms express:router cookieParser : / +0ms express:router stylus : / +0ms express:router serveStatic : / +2ms express:router router : / +2ms express:router dispatching GET / +1ms express:view lookup "index.pug" +338ms express:view stat "/projects/example/views/index.pug" +0ms express:view render "/projects/example/views/index.pug" +1ms
To see the logs only from the router implementation set the value of DEBUG
to express:router
. Likewise, to see logs only from the application implementation set the value of DEBUG
to express:application
, and so on.
express
An application generated by the express
command also uses the debug
module and its debug namespace is scoped to the name of the application.
For example, if you generated the app with $ express sample-app
, you can enable the debug statements with the following command:
$ DEBUG=sample-app:* node ./bin/www
You can specify more than one debug namespace by assigning a comma-separated list of names:
$ DEBUG=http,mail,express:* node index.js
When running through Node.js, you can set a few environment variables that will change the behavior of the debug logging:
Name | Purpose |
---|---|
DEBUG | Enables/disables specific debugging namespaces. |
DEBUG_COLORS | Whether or not to use colors in the debug output. |
DEBUG_DEPTH | Object inspection depth. |
DEBUG_FD | File descriptor to write debug output to. |
DEBUG_SHOW_HIDDEN | Shows hidden properties on inspected objects. |
Note: The environment variables beginning with DEBUG_
end up being converted into an Options object that gets used with %o
/%O
formatters. See the Node.js documentation for util.inspect()
for the complete list.
For more information about debug
, see the debug.
© 2017 StrongLoop, IBM, and other expressjs.com contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v3.0.
https://expressjs.com/en/guide/debugging.html