You are currently viewing Logging in Node.js with Winston

Logging in Node.js with Winston

  • Post author:
  • Post category:Nodejs
  • Post comments:0 Comments
  • Post last modified:February 18, 2024

Logging is an essential aspect of any application’s development and maintenance process. It helps developers track and debug issues, monitor application behavior, and gain insights into how the application is performing in different environments. Winston is a popular logging library for Node.js that provides a flexible and configurable logging framework. In this tutorial, we’ll explore how to use Winston to implement logging in a Node.js application.


Before we get started, make sure you have the following installed:

  • Node.js and npm (Node Package Manager) installed on your machine.
  • Basic knowledge of JavaScript and Node.js.

Step 1: Setting up a Node.js Project

Let’s start by creating a new directory for our Node.js project and initializing a new Node.js project using npm.

mkdir nodejs-logging-tutorial
cd nodejs-logging-tutorial
npm init -y

This will create a package.json file with default values.

Step 2: Installing Winston

Next, we’ll install Winston as a dependency for our project.

npm install winston

Step 3: Creating a Logger Module

Create a new file named logger.js in the project directory. This file will serve as our logger module, encapsulating the configuration and usage of the Winston logger.

In this module:

  • We import Winston and create a new logger instance with a default logging level of 'info'.
  • We configure the logger to include a timestamp in the log messages and define a custom log message format using winston.format.printf.
  • We add two transports: one for logging to the console (winston.transports.Console()) and another for logging to a file (winston.transports.File()).

Step 4: Using the Logger

Now, let’s create a simple Node.js script to demonstrate how to use the logger module we created.

Create a new file named index.js in the project directory with the following content:

This script imports the logger module we created earlier and logs some sample messages at different log levels ('info', 'warn', 'error').

Step 5: Running the Application

To run the application, execute the following command in the terminal:

node index.js

You should see the log messages printed to the console and also written to the app.log file in the project directory.


In this tutorial, you learned how to use Winston, a powerful logging library for Node.js, to implement logging in your applications. You created a logger module with configurable transports and log message formats, and you demonstrated how to use the logger to log messages at different levels in a Node.js script. Winston offers many additional features and customization options, so feel free to explore the official documentation to learn more about what it can do.

Leave a Reply