{"id":22616299,"url":"https://github.com/xpepermint/logmitter","last_synced_at":"2025-03-29T00:43:55.800Z","repository":{"id":47965488,"uuid":"211638284","full_name":"xpepermint/logmitter","owner":"xpepermint","description":"Universal logging utility as event emitter.","archived":false,"fork":false,"pushed_at":"2021-08-11T12:46:43.000Z","size":226,"stargazers_count":2,"open_issues_count":7,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-22T15:47:42.024Z","etag":null,"topics":["emit","emitter","event","log","logger","logging"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xpepermint.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-09-29T09:28:43.000Z","updated_at":"2019-10-10T14:03:44.000Z","dependencies_parsed_at":"2022-08-12T15:21:05.691Z","dependency_job_id":null,"html_url":"https://github.com/xpepermint/logmitter","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xpepermint%2Flogmitter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xpepermint%2Flogmitter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xpepermint%2Flogmitter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xpepermint%2Flogmitter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xpepermint","download_url":"https://codeload.github.com/xpepermint/logmitter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246122245,"owners_count":20726822,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["emit","emitter","event","log","logger","logging"],"created_at":"2024-12-08T19:12:03.563Z","updated_at":"2025-03-29T00:43:55.782Z","avatar_url":"https://github.com/xpepermint.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/xpepermint/logmitter.svg?branch=master)](https://travis-ci.org/xpepermint/logmitter)\u0026nbsp;[![codecov](https://codecov.io/gh/xpepermint/logmitter/branch/master/graph/badge.svg)](https://codecov.io/gh/xpepermint/logmitter)\u0026nbsp;[![NPM Version](https://badge.fury.io/js/logmitter.svg)](https://badge.fury.io/js/logmitter)\n\nLogmitter 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).\n\n## Installation\n\nRun the command below to install the package.\n\n```\n$ npm install --save logmitter\n```\n\n## Usage\n\n`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.\n\n### Listening and triggering events\n\nWe create a simple logger by creating a new instance of a `Logger` class. We can then emit and listen to different logging events. \n\n```ts\nimport { Logger, LogEvent } from 'logmitter';\n\nconst logger = new Logger(namespace);\n\nlogger.on(LogEvent.INFO, function({ date, event, message, namespace }) {\n  console.info(message);\n});\n\nlogger.info('Hello world!');\n```\n\n### Custom message format\n\nWe can easily change the message format by setting a custom message interface.\n\n```ts\ninterface Message {\n  code: number;\n  message: any;\n};\n\nconst logger = new Logger\u003cMessage\u003e(namespace);\n\nlogger.warn({ code: 200, message: 'Hello world!' });\n```\n\n### Namespaced logger\n\nTo distinguish between application parts, you can namespace the logger instance by creating a child instance which passes all events to the master instance.\n\n```ts\nconst userLogger = logger.child('user');\n```\n\n## API\n\n**Logger\u003cMessage\u003e(namespace)**\n\n\u003e Main logger class.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|------------\n| namespace | String | No | - | Logger namespace.\n\n**Logger.prototype.child(namespace)**: LoggerChild\n\n\u003e Returns logger child instance.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|------------\n| namespace | String | No | - | Logger namespace.\n\n**Logger.prototype.debug(message)**: Boolean\n\n\u003e Triggers `debug` event.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|------------\n| message | Message | Yes | - | Event message.\n\n**Logger.prototype.emit(event, message, namespace)**: Boolean\n\n\u003e Triggers log event.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|------------\n| event | String | Yes | - | Event name.\n| message | Message | Yes | - | Event message.\n| namespace | String | No | this | Logger namespace.\n\n**Logger.prototype.error(message)**: Boolean\n\n\u003e Triggers `error` event.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|------------\n| message | Message | Yes | - | Event message.\n\n**Logger.prototype.info(message)**: Boolean\n\n\u003e Triggers `info` event.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|------------\n| message | Message | Yes | - | Event message.\n\n**Logger.prototype.namespace**: string\n\n\u003e Returns logger namespace.\n\n**Logger.prototype.off(event, resolver)**: Logger\n\n\u003e Removes attached event listener.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|------------\n| event | String | Yes | - | Event name.\n| resolver | Function, Promise | No | - | Event resolver function. All event with the provided name are removed when the resolver is not provided.\n\n**Logger.prototype.on(event, resolver)**: Logger\n\n\u003e Attaches a listener function to log event.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|------------\n| event | String | Yes | - | Event name.\n| resolver | Function, Promise | Yes | - | Event resolver function.\n\n**Logger.prototype.once(event, resolver)**: Logger\n\n\u003e Attaches a listener function to log the event and automatically removes it after the event is triggered.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|------------\n| event | String | Yes | - | Event name.\n| resolver | Function, Promise | Yes | - | Event resolver function.\n\n**Logger.prototype.warn(message)**: Boolean\n\n\u003e Triggers `warn` event.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|------------\n| message | Message | Yes | - | Event message.\n\n**LoggerChild\u003cMessage\u003e(parent, namespace)**\n\n\u003e Logger child class.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|------------\n| parent | Logger | Yes | - | Parent logger class instance.\n| namespace | String | Yes | - | Logger namespace.\n\n**LoggerChild.prototype.child(namespace)**: LoggerChild\n\n\u003e Returns logger child instance.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|------------\n| namespace | String | No | - | Logger namespace.\n\n**LoggerChild.prototype.debug(message)**: Boolean\n\n\u003e Triggers `debug` event.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|------------\n| message | Message | Yes | - | Event message.\n\n**LoggerChild.prototype.error(message)**: Boolean\n\n\u003e Triggers `error` event.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|------------\n| message | Message | Yes | - | Event message.\n\n**LoggerChild.prototype.info(message)**: Boolean\n\n\u003e Triggers `info` event.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|------------\n| message | Message | Yes | - | Event message.\n\n**LoggerChild.prototype.namespace**: string\n\n\u003e Returns logger namespace.\n\n**LoggerChild.prototype.warn(message)**: Boolean\n\n\u003e Triggers `warn` event.\n\n| Option | Type | Required | Default | Description\n|--------|------|----------|---------|------------\n| message | Message | Yes | - | Event message.\n\n### Available events\n\n| Event | Value | Description\n|--------|------|----------\n| LogEvent.ERROR | error | Error event.\n| LogEvent.WARN | warn | Warning event.\n| LogEvent.INFO | info | Info event.\n| LogEvent.DEBUG | debug | Debug event.\n\n## Contributing\n\nSee [CONTRIBUTING.md](https://github.com/rawmodel/framework/blob/master/CONTRIBUTING.md) for how to help out.\n\n## Licence\n\nSee [LICENSE](https://github.com/rawmodel/framework/blob/master/LICENCE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxpepermint%2Flogmitter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxpepermint%2Flogmitter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxpepermint%2Flogmitter/lists"}