{"id":18364,"library":"express-winston-2","title":"express-winston-2","description":"Logging middleware for Express.js using winston. Version 0.0.2 (latest). Provides request and error logging with whitelist support for request/response properties, custom log levels based on status code, and skip/ignore functionality. Differentiator: uses winston's flexible transport system and allows fine-grained control over log level via a callback function. Basic functionality, rarely updated.","status":"active","version":"0.0.2","language":"javascript","source_language":"en","source_url":"https://github.com/nballaney/express-winston-2","tags":["javascript","winston","flatiron","logging","express","log","error","handler","middleware"],"install":[{"cmd":"npm install express-winston-2","lang":"bash","label":"npm"},{"cmd":"yarn add express-winston-2","lang":"bash","label":"yarn"},{"cmd":"pnpm add express-winston-2","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency; express-winston-2 directly depends on winston for logging transports and instances.","package":"winston","optional":false}],"imports":[{"note":"Package does not support ESM. Must use require().","wrong":"import expressWinston from 'express-winston-2';","symbol":"expressWinston","correct":"const expressWinston = require('express-winston-2');"},{"note":"logger is a method, not a constructor. Case-sensitive.","wrong":"expressWinston.Logger(options)","symbol":"logger","correct":"expressWinston.logger(options)"},{"note":"errorLogger method name is camelCase.","wrong":"expressWinston.errorlogger(options)","symbol":"errorLogger","correct":"expressWinston.errorLogger(options)"}],"quickstart":{"code":"const winston = require('winston');\nconst expressWinston = require('express-winston-2');\nconst express = require('express');\nconst app = express();\n\napp.use(expressWinston.logger({\n  transports: [\n    new winston.transports.Console({ json: true, colorize: true })\n  ],\n  meta: true,\n  msg: 'HTTP {{req.method}} {{req.url}}',\n  expressFormat: true,\n  colorStatus: true,\n  ignoreRoute: function (req, res) { return false; }\n}));\n\napp.use(require('./my-router'));\n\nconst port = process.env.PORT || 3000;\napp.listen(port, () => console.log('Server started'));","lang":"javascript","description":"Shows how to set up express-winston-2 middleware with console transport and custom message format."},"warnings":[{"fix":"Use require() instead of import.","message":"Package is not ESM compatible; using import syntax will fail.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Order middleware as: router, expressWinston.logger, expressWinston.errorLogger, error handlers.","message":"The logger middleware must be placed after the router and before custom error handlers for proper error logging.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Check changelog before upgrading; consider alternatives like express-winston.","message":"The whitelist feature is marked as new in 0.2.x but may be removed in future versions.","severity":"deprecated","affected_versions":">=0.2.0"},{"fix":"Use either transports or winstonInstance, not both.","message":"Setting winstonInstance ignores the transports option; only one should be used.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Define getLogLevel with parameter (statusCode) to return log level.","message":"The getLogLevel function receives the response status code, not the response object.","severity":"gotcha","affected_versions":">=0.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Run 'npm install express-winston-2' and check spelling in require().","cause":"Package not installed or typo in module name.","error":"Cannot find module 'express-winston-2'"},{"fix":"Ensure required correctly: const expressWinston = require('express-winston-2');","cause":"Incorrect import or module load failure.","error":"TypeError: expressWinston.logger is not a function"},{"fix":"Use 'new winston.transports.Console()' or appropriate transport constructor.","cause":"Transport object is not an instance of winston.Transport.","error":"Error: Invalid winston transport"},{"fix":"Change getLogLine to getLogLevel and accept (statusCode) instead of (res).","cause":"getLogLevel function expects statusCode argument but response object is passed.","error":"TypeError: Cannot read property 'statusCode' of undefined"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}