https://github.com/xpepermint/logmitter
Universal logging utility as event emitter.
https://github.com/xpepermint/logmitter
emit emitter event log logger logging
Last synced: 30 days ago
JSON representation
Universal logging utility as event emitter.
- Host: GitHub
- URL: https://github.com/xpepermint/logmitter
- Owner: xpepermint
- License: mit
- Created: 2019-09-29T09:28:43.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-08-11T12:46:43.000Z (over 3 years ago)
- Last Synced: 2025-03-22T15:47:42.024Z (about 1 month ago)
- Topics: emit, emitter, event, log, logger, logging
- Language: TypeScript
- Size: 221 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
Awesome Lists containing this project
README
[](https://travis-ci.org/xpepermint/logmitter) [](https://codecov.io/gh/xpepermint/logmitter) [](https://badge.fury.io/js/logmitter)
Logmitter is a universal logging utility which acts as event emitter. It's a lightweight open-source package for the **server** and **browser** (using module bundler), written with [TypeScript](https://www.typescriptlang.org). It's actively maintained, well tested and already used in production environments. The source code is available on [GitHub](https://github.com/xpepermint/logmitter) where you can also find our [issue tracker](https://github.com/xpepermint/logmitter/issues).
## Installation
Run the command below to install the package.
```
$ npm install --save logmitter
```## Usage
`Logger` class is an event emitter which provides standard methods for triggering and listening to different logging events. This class should be used as a central logger instance of your application.
### Listening and triggering events
We create a simple logger by creating a new instance of a `Logger` class. We can then emit and listen to different logging events.
```ts
import { Logger, LogEvent } from 'logmitter';const logger = new Logger(namespace);
logger.on(LogEvent.INFO, function({ date, event, message, namespace }) {
console.info(message);
});logger.info('Hello world!');
```### Custom message format
We can easily change the message format by setting a custom message interface.
```ts
interface Message {
code: number;
message: any;
};const logger = new Logger(namespace);
logger.warn({ code: 200, message: 'Hello world!' });
```### Namespaced logger
To distinguish between application parts, you can namespace the logger instance by creating a child instance which passes all events to the master instance.
```ts
const userLogger = logger.child('user');
```## API
**Logger(namespace)**
> Main logger class.
| Option | Type | Required | Default | Description
|--------|------|----------|---------|------------
| namespace | String | No | - | Logger namespace.**Logger.prototype.child(namespace)**: LoggerChild
> Returns logger child instance.
| Option | Type | Required | Default | Description
|--------|------|----------|---------|------------
| namespace | String | No | - | Logger namespace.**Logger.prototype.debug(message)**: Boolean
> Triggers `debug` event.
| Option | Type | Required | Default | Description
|--------|------|----------|---------|------------
| message | Message | Yes | - | Event message.**Logger.prototype.emit(event, message, namespace)**: Boolean
> Triggers log event.
| Option | Type | Required | Default | Description
|--------|------|----------|---------|------------
| event | String | Yes | - | Event name.
| message | Message | Yes | - | Event message.
| namespace | String | No | this | Logger namespace.**Logger.prototype.error(message)**: Boolean
> Triggers `error` event.
| Option | Type | Required | Default | Description
|--------|------|----------|---------|------------
| message | Message | Yes | - | Event message.**Logger.prototype.info(message)**: Boolean
> Triggers `info` event.
| Option | Type | Required | Default | Description
|--------|------|----------|---------|------------
| message | Message | Yes | - | Event message.**Logger.prototype.namespace**: string
> Returns logger namespace.
**Logger.prototype.off(event, resolver)**: Logger
> Removes attached event listener.
| Option | Type | Required | Default | Description
|--------|------|----------|---------|------------
| event | String | Yes | - | Event name.
| resolver | Function, Promise | No | - | Event resolver function. All event with the provided name are removed when the resolver is not provided.**Logger.prototype.on(event, resolver)**: Logger
> Attaches a listener function to log event.
| Option | Type | Required | Default | Description
|--------|------|----------|---------|------------
| event | String | Yes | - | Event name.
| resolver | Function, Promise | Yes | - | Event resolver function.**Logger.prototype.once(event, resolver)**: Logger
> Attaches a listener function to log the event and automatically removes it after the event is triggered.
| Option | Type | Required | Default | Description
|--------|------|----------|---------|------------
| event | String | Yes | - | Event name.
| resolver | Function, Promise | Yes | - | Event resolver function.**Logger.prototype.warn(message)**: Boolean
> Triggers `warn` event.
| Option | Type | Required | Default | Description
|--------|------|----------|---------|------------
| message | Message | Yes | - | Event message.**LoggerChild(parent, namespace)**
> Logger child class.
| Option | Type | Required | Default | Description
|--------|------|----------|---------|------------
| parent | Logger | Yes | - | Parent logger class instance.
| namespace | String | Yes | - | Logger namespace.**LoggerChild.prototype.child(namespace)**: LoggerChild
> Returns logger child instance.
| Option | Type | Required | Default | Description
|--------|------|----------|---------|------------
| namespace | String | No | - | Logger namespace.**LoggerChild.prototype.debug(message)**: Boolean
> Triggers `debug` event.
| Option | Type | Required | Default | Description
|--------|------|----------|---------|------------
| message | Message | Yes | - | Event message.**LoggerChild.prototype.error(message)**: Boolean
> Triggers `error` event.
| Option | Type | Required | Default | Description
|--------|------|----------|---------|------------
| message | Message | Yes | - | Event message.**LoggerChild.prototype.info(message)**: Boolean
> Triggers `info` event.
| Option | Type | Required | Default | Description
|--------|------|----------|---------|------------
| message | Message | Yes | - | Event message.**LoggerChild.prototype.namespace**: string
> Returns logger namespace.
**LoggerChild.prototype.warn(message)**: Boolean
> Triggers `warn` event.
| Option | Type | Required | Default | Description
|--------|------|----------|---------|------------
| message | Message | Yes | - | Event message.### Available events
| Event | Value | Description
|--------|------|----------
| LogEvent.ERROR | error | Error event.
| LogEvent.WARN | warn | Warning event.
| LogEvent.INFO | info | Info event.
| LogEvent.DEBUG | debug | Debug event.## Contributing
See [CONTRIBUTING.md](https://github.com/rawmodel/framework/blob/master/CONTRIBUTING.md) for how to help out.
## Licence
See [LICENSE](https://github.com/rawmodel/framework/blob/master/LICENCE) for details.