This library provides a JavaScript/TypeScript logger inspired by Python's logger.
- Simple logging with default handlers supporting
console.log,console.error, andprocess.stderr. - Fast, logging level checks or log filters are applied before log records are created
- Complex log records properties support lazy evaluation, so they evaluated only when they need to be rendered
- Flexible composition of loggers, handlers and formatters
- Custom formatting using template literals
- Supports structured logging through a JSON formatter
- Supports hierarchical logging through parent-child logger graph
- CI/CD tests on Linux, MacOS and Windows
- Zero runtime dependencies!
- Comprehensive continuous benchmarks in CI/CD
npm install --save @matrixai/logger
import Logger, { LogLevel, StreamHandler, formatting } from '@matrixai/logger'; const logger = new Logger('root', LogLevel.INFO, [ new StreamHandler( formatting.format`${formatting.date}:${formatting.level}:${formatting.key}:${formatting.msg}:${formatting.data}`, ), ]); logger.debug('Hello world', { a: { b: [123, 456] } }); logger.info('Hello world', { 123: { b: [123, 456] } }); logger.warn('Hello world', { lazy: () => 'string' }); logger.error('Hello world', formatting.format`my custom format`); const loggerChild = logger.getChild('child'); loggerChild.info( 'Hello world', { 123: { b: [123, 456] } }, formatting.format`${formatting.keys}:${formatting.msg}:${formatting.data}`, );
There's lots more options available in the source code. See the docs and see the source code for more details.
Run nix develop, and once you're inside, you can use:
# install (or reinstall packages from package.json) npm install # build the dist npm run build # run the repl (this allows you to import from ./src) npm run tsx # run the tests npm run test # lint the source code npm run lint # automatically fix the source npm run lintfix
npm run docs
See the docs at: https://matrixai.github.io/js-logger/
Publishing is handled automatically by the staging pipeline.
Prerelease:
# npm login npm version prepatch --preid alpha # premajor/preminor/prepatch git push --follow-tags
Release:
# npm login npm version patch # major/minor/patch git push --follow-tags
Manually:
# npm login npm version patch # major/minor/patch npm run build npm publish --access public git push git push --tags