---
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
---

> ## 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.
