Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 51 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,54 @@
# simplelog
# simplelog-decorator

![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/devsheva/simplelog/qa.yml)
[![NPM Version](https://img.shields.io/npm/v/simplelog-decorator)](https://www.npmjs.com/package/simplelog-decorator)
[![Codecov](https://img.shields.io/codecov/c/github/devsheva/simplelog)](https://app.codecov.io/github/devsheva/simplelog)

A simple logger decorator amplify like
A simple logger built as class decorator, amplify like.

## Important
## Quick Start

**Experimental decorators** are used for this package implementation and since experimental it has some bugs like unsafe typing.
### 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](https://www.npmjs.com/package/@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`

```ts
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

```ts
Expand All @@ -20,4 +60,10 @@ class Example {
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.