@xailabs/logger
A class decorator that adds a `logger` object to instances. The logger object prepends a name to all of its output.
Last updated 3 years ago by loopmode .
ISC · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @xailabs/logger 
SYNC missed versions from official npm registry.

@xailabs/logger

A class decorator that adds a logger object to instances. The logger object prepends a name to all of its output.

Very usefull when working with many different components, or sources of log messages in general.

Documentation: https://xailabs.github.io/logger/

Installation

npm install @xailabs/logger

or:

yarn add @xailabs/logger

Examples

Default usage with decorator syntax:

import {Component} from 'react';
import logger from '@xailabs/logger';
@logger('App')
class App extends Component {
     componentDidMount() {
         this.logger.warn('watch out!'); // logs a warning '[App] watch out!'
     }
}

Without decorator syntax

class App extends Component {
     componentDidMount() {
         this.logger.log('ok');
     }
}
logger('App')(App);

Without target - creates a new logger object

import {Component} from 'react';
import createLogger from '@xailabs/logger';
const logger = createLogger('App')();
logger.info('ok');

With log level. (See config.level in the docs for details)

const logLevel = process.env.NODE_ENV === 'development' ? 'debug' : 'info';
@logger('App', {level: logLevel})
class App extends Component {
     componentDidMount() {
        this.logger.log('ok'); // logs in both production and development
        this.logger.info('ok'); // logs in both production and development
        this.logger.warn('watch out!'); // only logs in development
     }
}

Using a function instead of a string as name - retrieves dynamic values

@logger(() => new Date().toISOString())
class App extends Component {
     componentDidMount() {
         this.log('ok'); // logs something like '[2017-08-01T16:37:14.444Z] ok'
     }
}   

Custom accessor

@logger('App', {accessor: 'logging'})
class App extends Component {
     componentDidMount() {
         this.logging.log('ok'); // access via this.logging
     }
}   

Magic 'this' accessor

@logger('App', {accessor: 'this'})
class App extends Component {
     componentDidMount() {
         this.log('ok'); // access via this.log() instead of this.something.log()
     }
}   

Custom log backend:

@logger('App', {backend: require('winston')})
class App extends Component {
     componentDidMount() {
         this.logger.log('ok'); // logs using winston instead of the console
     }
}   

Multiple log backends:

@logger('App', {backend: [window.console, require('winston'), anotherCustomLogger})
class App extends Component {
     componentDidMount() {
         this.logger.log('ok'); // logs to all the logger objects that have a "log" function
     }
}   

Current Tags

  • 1.2.0                                ...           latest (3 years ago)

8 Versions

  • 1.2.0                                ...           3 years ago
  • 1.1.3                                ...           3 years ago
  • 1.1.2                                ...           3 years ago
  • 1.1.1                                ...           3 years ago
  • 1.1.0                                ...           3 years ago
  • 1.0.2                                ...           3 years ago
  • 1.0.1                                ...           3 years ago
  • 1.0.0                                ...           3 years ago
Downloads
Today 0
This Week 0
This Month 1
Last Day 0
Last Week 2
Last Month 3
Dependencies (0)
None
Dev Dependencies (7)
Dependents (0)
None

Copyright 2014 - 2016 © taobao.org |