--- title: "Stackify Node.js Logger" slug: "stackify-nodejs-logger" description: "Learn how to set up and use Stackify's Standalone Node.js Logger to track application logs and errors. Install, configure, and troubleshoot with ease." updated: 2020-02-27T22:46:10Z published: 2020-02-27T22:46:10Z canonical: "docs.stackify.com/stackify-nodejs-logger" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.stackify.com/llms.txt > Use this file to discover all available pages before exploring further. # Stackify Node.js Logger Guide on setting up Stackify's **Standalone Node.js Logger** to track application logs and errors. ### Installation Install the Direct Logger package via npm. ``` $ npm install stackify-logger ``` ### Usage ``` var stackify = require('stackify-logger'); // this should be executed only once in the app stackify.start({apiKey: '***', appName: 'Node Application', env: 'Production'}); ``` ### Options The following options could be passed to the start method: - **apiKey (Required):** Stackify API key - **appName (Required):** Application name - **env:** Environment name. If a Stackify agent is installed, this does not need to be set. If a Stackify agent is not installed, this should be set to the environment name. - **proxy:** HTTP proxy - **debug:** Enables internal debug logging for troubleshooting. Defaults to false. > When calling `process.exit()`, the stackify-logger will synchronously send log messages that have been queued but not transmitted. Sending via proxy wouldn't be possible in this case. ### Using direct logger If you are not using Winston logger you can use default Stackify logger. It has 5 levels of messages: `trace`, `debug`, `info`, `warn` and `error`. To send the message to Stackify API you should run one of the following methods in any place of your code where you want to track some information: ``` stackify.log(level, message [, meta]) stackify.trace(message [, meta]) stackify.debug(message [, meta]) stackify.info(message [, meta]) stackify.warn(message [, meta]) stackify.error(message [, meta]) stackify.fatal(message [, meta]) ``` **Message:** must be a string. **meta:** an additional parameter of any type. Examples of usage: ``` // Add the module to all the script files where you want to log any messages. var stackify = require('stackify-logger'); stackify.log('info', 'hey!'); stackify.debug('any message'); stackify.info('any message', {anything: 'this is metadata'}); stackify.warn('attention'); stackify.log('error', {error : new Error()}); ``` When logging an error message you can pass an Error object in metadata like in the last example, so the exception details would be available. ### Exception handling By executing `stackify.start()` you set a handler for uncaught exceptions. Make sure you run it before any methods that set exception handlers. ### Using with Express Global handler doesn't work inside Express route methods. You should use error-handling middleware function `stackify.expressExceptionHandler`. Since middleware is executed serially, it's order of inclusion is important. Make sure you add it before any other error-handling middleware. ``` var express = require('express'); var app = express(); /* *** block of route handlers *** *** *** **** **** **** **** *** */ app.use(stackify.expressExceptionHandler); ``` To handle exceptions correctly put this right after all route handlers. ### Troubleshooting If logging isn't working, enable internal debug logging for Stackify by setting the debug flag in the Stackify options. ``` stackify.start({apiKey: '***', appName: 'Node Application', env: 'Production', debug: true}); ``` You will see `stackify-debug.log` in your application's directory.