🌲 super fast, all natural json logger
MIT License
Bot releases are visible (Hide)
Published by mcollina almost 3 years ago
Full Changelog: https://github.com/pinojs/pino/compare/v7.4.1...v7.5.0
Published by mcollina almost 3 years ago
Full Changelog: https://github.com/pinojs/pino/compare/v7.4.0...v7.4.1
Published by mcollina almost 3 years ago
Full Changelog: https://github.com/pinojs/pino/compare/v7.3.0...v7.4.0
Published by mcollina almost 3 years ago
watchFileCreated
fails are timeouts by @voxpelli in https://github.com/pinojs/pino/pull/1219
Full Changelog: https://github.com/pinojs/pino/compare/v7.2.0...v7.3.0
Published by mcollina almost 3 years ago
Full Changelog: https://github.com/pinojs/pino/compare/v7.1.0...v7.2.0
Published by mcollina almost 3 years ago
Full Changelog: https://github.com/pinojs/pino/compare/v7.0.5...v7.1.0
Published by mcollina almost 3 years ago
Full Changelog: https://github.com/pinojs/pino/compare/v7.0.4...v7.0.5
Published by mcollina almost 3 years ago
Full Changelog: https://github.com/pinojs/pino/compare/v7.0.3...v7.0.4
Published by mcollina about 3 years ago
Full Changelog: https://github.com/pinojs/pino/compare/v7.0.2...v7.0.3
Published by mcollina about 3 years ago
pino.multistream
by @clemyan in https://github.com/pinojs/pino/pull/1152
Full Changelog: https://github.com/pinojs/pino/compare/v7.0.1...v7.0.2
Published by mcollina about 3 years ago
Updated install instructions
Full Changelog: https://github.com/pinojs/pino/compare/v7.0.0...v7.0.1
Published by mcollina about 3 years ago
pino.transport()
Create a a stream that routes logs to a worker thread that
wraps around a Pino Transport.
const pino = require('pino')
const transport = pino.transport({
target: 'some-transport',
options: { some: 'options for', the: 'transport' }
})
pino(transport)
Multiple transports may also be defined, and specific levels can be logged to each transport:
const pino = require('pino')
const transports = pino.transport({
targets: [{
level: 'info',
target: 'pino-pretty'
}, {
level: 'trace',
target: 'pino/file',
options: { destination: '/path/to/store/logs' }
}]
})
pino(transports)
Transports may alternatively be arranged in a pipeline:
const logger = pino({
transport: {
pipeline: [{
target: './my-transform.js'
}, {
// Use target: 'pino/file' to write to stdout
// without any change.
target: 'pino-pretty'
}]
}
})
logger.info('hello world')
For more on transports, how they work, and how to create them see the Transports documentation
.
The internal implementation is based on thread-stream
⇗.
We have embedded a part of pino-multi-stream
into pino itself, so you would be able to write to multiple streams from the same pino instance:
var fs = require('fs')
var pino = require('pino')
var streams = [
{stream: fs.createWriteStream('/tmp/info.stream.out')},
{level: 'debug', stream: fs.createWriteStream('/tmp/debug.stream.out')},
{level: 'fatal', stream: fs.createWriteStream('/tmp/fatal.stream.out')}
]
var log = pino({
level: 'debug' // this MUST be set at the lowest level of all the destinations
}, pino.multistream(streams))
log.debug('this will be written to /tmp/debug.stream.out')
log.info('this will be written to /tmp/debug.stream.out and /tmp/info.stream.out')
log.fatal('this will be written to /tmp/debug.stream.out, /tmp/info.stream.out and /tmp/fatal.stream.out')
This differs from pino.transport()
as all the streams will be executed within the main thread, i.e. the one that created the pino instance.
Types have been added to the the project, so you can now use pino with TypeScript without downloading any additional types: you should remove @types/pino
from your project. The following typescript example would now work correctly:
import { pino } from "pino";
const log = pino();
log.info("hello world");
log.error("this is at error level");
log.info("the answer is %d", 42);
log.info({ obj: 42 }, "hello world");
log.info({ obj: 42, b: 2 }, "hello world");
log. info({ obj: { aa: "bbb" } }, "another");
sonic-boom, our fs.createWriteStream()
replacement has become safer to use in v2.x.
A few selected changes:
sync: false
destinations and transportsThanks to the addition of WeakRef
and FinalizationRegistry
to JavaScript (available in Node.js v14+) we can automatically flush asynchronous streams when the processes exits without leaking memory.
Check out https://github.com/mcollina/on-exit-leak-free.
prettyPrint
optionThe prettyPrint
option has been deprecated in favor of the new transport system.
Node.js v10 went out of LTS/Maintenance in April 2021.
We are dropping support.
err
serializer everywhereWe will start applying the err
serializer also to Error
objects passed in as first argument to log methods, e.g. log.info(new Error('kaboom'))
will pass through the serializer.
Extreme mode has been deprecated in previous release cycle and it has now been removed.
options.level
documentation of the child logger by @marcbachmann in https://github.com/pinojs/pino/pull/1125
Published by mcollina about 3 years ago
Full Changelog: https://github.com/pinojs/pino/compare/v7.0.0-rc.8...v7.0.0-rc.9
Published by mcollina about 3 years ago
Full Changelog: https://github.com/pinojs/pino/compare/v7.0.0-rc.7...v7.0.0-rc.8
Published by mcollina about 3 years ago
Full Changelog: https://github.com/pinojs/pino/compare/v7.0.0-rc.6...v7.0.0-rc.7
Published by mcollina about 3 years ago
Full Changelog: https://github.com/pinojs/pino/compare/v6.13.2...v6.13.3
Published by mcollina about 3 years ago
Full Changelog: https://github.com/pinojs/pino/compare/v7.0.0-rc.5...v7.0.0-rc.6
Published by mcollina about 3 years ago
options.level
documentation of the child logger by @marcbachmann in https://github.com/pinojs/pino/pull/1125
file.js
to package.json
Full Changelog: https://github.com/pinojs/pino/compare/v7.0.0-rc.4...v7.0.0-rc.5
Published by mcollina about 3 years ago
Full Changelog: https://github.com/pinojs/pino/compare/v7.0.0-rc.3...v7.0.0-rc.4
Published by mcollina about 3 years ago
Full Changelog: https://github.com/pinojs/pino/compare/v6.13.1...v6.13.2