ausgabe is designed to output user relevant log messages to the console or to a custom stream. It's lightweight, customizable and perfect for tools that need simple, yet beautiful log messages.
npm install ausgabe
import { createLogger } from 'ausgabe'
const instance = createLogger({
info: {
color: 'blue',
badge: 'ℹ',
label: 'info',
},
})
instance.info('Hello world')import figures from 'figures'
import { createLogger } from 'ausgabe'
const instance = createLogger(
{
info: {
color: 'blue',
badge: figures.info,
label: 'info',
},
warn: {
color: 'yellow',
badge: figures.warning,
label: 'warn',
stack: false,
},
error: {
color: 'red',
badge: figures.cross,
label: 'error',
},
},
{
indention: 7,
},
)
// Simple messages
instance.info('Hello world')
instance.info('%s %s', 'Hello', 'world')
// Error messages
instance.warn(new Error('Logs error without the stack'))
// Complex error messages
instance.error(new Error('Logs error with the stack'))
instance.error(new Error('Logs error with the stack and cause error', { cause: new Error('Cause error') }))
instance.error(
new AggregateError(
[new Error('First error'), new Error('Second error')],
'Logs aggregate error with multiple errors',
),
)ausgabe supports nested logger instances.
import { createLogger } from 'ausgabe'
const instance = createLogger({
requests: createLogger({
get: {
color: 'magenta',
badge: '↗',
label: 'get',
},
post: {
color: 'magenta',
badge: '↗',
label: 'post',
},
}),
})
instance.requests.get('http://example.com')
instance.requests.post('http://example.com')ausgabe streams to process.stdout by default, but also allows custom writable streams.
import { Writable } from 'node:stream'
import { createLogger } from 'ausgabe'
const stream = new Writable({
write: (chunk, encoding, callback) => {
console.log(chunk.toString())
callback()
},
})
const instance = createLogger({
info: {
color: 'blue',
badge: 'ℹ',
label: 'info',
streams: [stream],
},
})
instance.info('Hello world')ausgabe only logs what you tell it to log. To catch all unhandled rejections and uncaught exceptions, you can use process.on. This isn't specific to ausgabe, but a general Node.js feature.
import figures from 'figures'
import { createLogger } from 'ausgabe'
const instance = createLogger({
error: {
color: 'red',
badge: figures.cross,
label: 'error',
},
})
process.on('unhandledRejection', (error) => {
instance.error(error)
})
process.on('uncaughtException', (error) => {
instance.error(error)
})import { createLogger } from 'ausgabe'
const instance = createLogger({
info: {
color: 'blue',
badge: 'ℹ',
label: 'info',
},
})import { createLogger } from 'ausgabe'
const instance = createLogger(
{
info: {
color: 'blue',
badge: 'ℹ',
label: 'info',
},
},
{
indention: 6,
},
)types{object}Methods of the logger.color{?string}Color of the log. Must be supported by chalk. Defaults toblue.badge{?string}Icon to log along with the message. Using figures is recommended. Defaults toℹ.label{?string}Label to log along with the message. Defaults toinfo.stack{?boolean}Determines if the stack of an error should be logged. Defaults totrue.streams{?WritableStream[]}Writable streams to which the data is written. Defaults to[process.stdout].
options{?object}Options.indention{?number}Aligns log messages with a custom indention. Defaults to0.
{object}ausgabe instance.
instance.info('Hello world')
instance.info('%s %s', 'Hello', 'world')message{any}Data to log that may contain zero or more substitution strings.substitutions{...any}Data with which to replace substitution strings withinmessage.
- signale - Highly configurable logging utility
I am working hard on continuously developing and maintaining my projects. Please consider making a donation to keep the project going strong and me motivated.