Log errors with Winston.
Please reach out if you're looking for a Node.js API or CLI engineer (11 years of experience). Most recently I have been Netlify Build's and Netlify Plugins' technical lead for 2.5 years. I am available for full-time remote positions.
This provides with two Winston formats:
Unlike Winston's default error format:
name
is loggedcause
errors
Using the full format.
import { createLogger, transports, format } from 'winston'
import { fullFormat } from 'winston-error-format'
const logger = createLogger({
format: format.combine(fullFormat(), format.json()),
transports: [new transports.Http(httpOptions)],
})
const error = new ExampleError('Could not read file.')
error.filePath = '/...'
logger.error(error)
// Sent via HTTP:
// {
// level: 'error',
// name: 'ExampleError',
// message: 'Could not read file.',
// stack: `ExampleError: Could not read file.
// at ...`,
// filePath: '/...',
// }
Using the short format.
import { createLogger, transports, format } from 'winston'
import { shortFormat } from 'winston-error-format'
const logger = createLogger({
format: format.combine(shortFormat(), format.cli()),
transports: [new transports.Console()],
})
const error = new ExampleError('Could not read file.')
logger.error(error)
// Printed on the console:
// error: ExampleError: Could not read file.
// at ...
npm install winston-error-format
This package requires installing Winston separately.
npm install winston
This package works in Node.js >=18.18.0.
This is an ES module. It must be loaded using
an import
or import()
statement,
not require()
. If TypeScript is used, it must be configured to
output ES modules,
not CommonJS.
options
: Options
Return value: Format
Returns a logger
format
to combine with
format.json()
or
format.prettyPrint()
. This
logs all error properties, making it useful with
transports like
HTTP.
Errors should be logged using
logger.*(error)
.
options
: Options
Return value: Format
Returns a logger
format
to combine with
format.simple()
or
format.cli()
. This logs only the
error name
, message
and stack
, making it useful with
transports like the
console.
Errors should be logged using
logger.*(error)
.
Type: object | ((Error) => object)
The options object can be error-specific by passing a function returning it instead.
Type: boolean
Default: true
Whether to log the stack trace.
Type: string
Override the log level.
Type: (Error) => Error
Maps the error
before logging it.
winston
: A logger for just aboutmodern-errors
: Handle errors inmodern-errors-winston
:error-custom-class
: Createerror-class-utils
: Utilitieserror-serializer
: Convertnormalize-exception
:is-error-instance
: Check ifError
instancemerge-error-cause
: Merge ancause
set-error-class
: Properlyset-error-message
: Properlywrap-error-message
:set-error-props
: Properlyset-error-stack
: Properlyerror-cause-polyfill
:error.cause
handle-cli-error
: 💣 Errorsafe-json-value
: ⛑️ JSONlog-process-errors
: Showerror-http-response
:For any question, don't hesitate to submit an issue on GitHub.
Everyone is welcome regardless of personal background. We enforce a Code of conduct in order to promote a positive and inclusive environment.
This project was made with ❤️. The simplest way to give back is by starring and sharing it online.
If the documentation is unclear or has a typo, please click on the page's Edit
button (pencil icon) and suggest a correction.
If you would like to help us fix a bug or add a new feature, please check our guidelines. Pull requests are welcome!