Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/matrixai/js-logger
TypeScript/JavaScript Logger Library
https://github.com/matrixai/js-logger
logging structured-logging tracing
Last synced: about 2 months ago
JSON representation
TypeScript/JavaScript Logger Library
- Host: GitHub
- URL: https://github.com/matrixai/js-logger
- Owner: MatrixAI
- License: apache-2.0
- Created: 2021-02-14T23:38:36.000Z (almost 4 years ago)
- Default Branch: staging
- Last Pushed: 2024-05-15T11:51:06.000Z (8 months ago)
- Last Synced: 2024-10-28T22:15:15.029Z (3 months ago)
- Topics: logging, structured-logging, tracing
- Language: TypeScript
- Homepage: https://polykey.com
- Size: 1.5 MB
- Stars: 1
- Watchers: 7
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# js-logger
staging:[![pipeline status](https://gitlab.com/MatrixAI/open-source/js-logger/badges/staging/pipeline.svg)](https://gitlab.com/MatrixAI/open-source/js-logger/commits/staging)
master:[![pipeline status](https://gitlab.com/MatrixAI/open-source/js-logger/badges/master/pipeline.svg)](https://gitlab.com/MatrixAI/open-source/js-logger/commits/master)This library provides a JavaScript/TypeScript logger inspired by Python's logger.
* Simple logging with default handlers supporting `console.log`, `console.error`, and `process.stderr`.
* Fast, logging level checks or log filters are applied **before** log records are created
* Complex log records properties ssupport 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## Installation
```sh
npm install --save @matrixai/logger
```## Usage
```ts
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.
## Development
Run `nix-shell`, and once you're inside, you can use:
```sh
# 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
```### Docs Generation
```sh
npm run docs
```See the docs at: https://matrixai.github.io/js-logger/
### Publishing
Publishing is handled automatically by the staging pipeline.
Prerelease:
```sh
# npm login
npm version prepatch --preid alpha # premajor/preminor/prepatch
git push --follow-tags
```Release:
```sh
# npm login
npm version patch # major/minor/patch
git push --follow-tags
```Manually:
```sh
# npm login
npm version patch # major/minor/patch
npm run build
npm publish --access public
git push
git push --tags
```