Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

devsheva/simplelog

Open more actions menu

Repository files navigation

simplelog-decorator

GitHub Actions Workflow Status NPM Version NPM Downloads Codecov

A simple logger built as class decorator, amplify like.

Quick Start

Usage

Due to the experimental decorators feature, there are some limitations. Starting from the preferred syntax @Logger()

In TypeScript you need to simply enable experimentalDecorators: true in your tsconfig.json, to be able to use the preferred syntax.

In JavaScript you need to use external libraries like @babel/plugin-proposal-decorators to use the preferred syntax.

Anyway since a decorator is just a function, you can use it by importing the loggerDecorator method.

Arguments of logger are:

  • name: optional, default value is name of class
  • options:
    • level: default to info
import Logger, {loggerDecorator} from 'simplelog-decorator'

// @Logger('YourCustomClass')
// @Logger('YourCustomClass', {level: 'warn'})
// loggerDecorator()(YourClass) 
@Logger() // name will be YourClass, level info
class YourClass {
   sample_method() {
      this.logger.verbose('hi from sample_method')
      this.logger.debug('hi from sample_method')
      this.logger.info('hi from sample_method')
      this.logger.warn('hi from sample_method')
      this.logger.error('hi from sample_method')

   }
}

Limitations

As previously said, experimental decorators are used for this package implementation and since experimental it has some bugs like unsafe typing. TypeScript compiler complains when it finds out a property used inside a class that calls a decorator cause it cannot infer it, so as a temporary workaround simply declare an interface

interface Example {logger: any}

@Logger()
class Example {
   hello() {
    this.logger.debug() // THIS IS VALID
   }
}

Contributing

This has been developed as a personal project, in order to be able to have an amplify-like logger as a package, without needing to install the whole amplify lib for just logging features.

But feel free to contribute by forking this project and opening a PR once done.

About

A simple logger decorator amplify like

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.