# loglevel-prefix

> Plugin for loglevel message prefixing

Latest version **0.3.1** (published 2017-06-02) · MIT license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

```sh
npm install loglevel-prefix
pnpm add loglevel-prefix
yarn add loglevel-prefix
bun add loglevel-prefix
```

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 0.3.1 |
| Published | 2017-06-02 |
| First published | 2017-05-24 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 64 |
| Author | kutuluk |
| Maintainers | kutuluk |
| Keywords | loglevel, loglevel-plugin |

## Links

- npm: https://www.npmjs.com/package/loglevel-prefix
- Repository: https://github.com/kutuluk/loglevel-prefix
- Issues: https://github.com/kutuluk/loglevel-prefix/issues
- npm.io page: https://npm.io/package/loglevel-prefix

## Alternatives

- [cli-color](https://npm.io/package/cli-color.md) — 3.4M weekly downloads
- [log](https://npm.io/package/log.md) — 1.3M weekly downloads
- [logstash-client](https://npm.io/package/logstash-client.md) — 4.5K weekly downloads
- [@nocobase/plugin-logger](https://npm.io/package/@nocobase/plugin-logger.md) — 2.0K weekly downloads
- [child-process-debug](https://npm.io/package/child-process-debug.md) — 695 weekly downloads

## Recent versions

- 0.3.1 (latest) — 2017-06-02
- 0.3.0 — 2017-06-02
- 0.2.2 — 2017-05-31
- 0.2.1 — 2017-05-31
- 0.2.0 — 2017-05-31
- 0.1.18 — 2017-05-30
- 0.1.17 — 2017-05-30
- 0.1.16 — 2017-05-30
- 0.1.15 — 2017-05-30
- 0.1.14 — 2017-05-30
- 0.1.13 — 2017-05-30
- 0.1.12 — 2017-05-30
- 0.1.11 — 2017-05-30
- 0.1.10 — 2017-05-29
- 0.1.9 — 2017-05-29
- … 8 more at https://npm.io/package/loglevel-prefix/versions

## README

# loglevel-prefix
Minimal lightweight (0.9KB minified and gzipped) plugin for [loglevel](https://github.com/pimterry/loglevel) message prefixing

## Installation

```sh
npm install loglevel-prefix --save
```

## API

```javascript
prefix(log[, options]);
```

**log** - root logger, imported from loglevel package

**options** - configuration object

```javascript
default_options = {
  template: '[%t] %l:',
  timestampFormatter: date => date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, '$1'),
  levelFormatter: level => level.toUpperCase(),
  nameFormatter: name => name || 'root'
}
```

Plugin formats the prefix using **template** option as a printf-like format.

The **template** is a string containing zero or more placeholder tokens. Each placeholder token is replaced with the value from loglevel messages parameters. Supported placeholders are:

%t - Timestamp of message.

%l - Level of message.

%n - Name of logger.

The **timestampFormatter**, **levelFormatter** and **nameFormatter** is a functions for formatting corresponding values

## Base usage

### Browser directly

Download [production version](https://raw.githubusercontent.com/kutuluk/loglevel-prefix/master/dist/loglevel-prefix.min.js)
and copy to your project folder
```html
<script src="loglevel.min.js"></script>
<script src="loglevel-prefix.min.js"></script>

<script>
  prefix(log);
  log.warn('prefixed message');
</script>
```

Output
```
[12:53:46] WARN: prefixed message
```

### ES6
```javascript

import log from 'loglevel';
import prefix from 'loglevel-prefix';

prefix(log);
log.warn('prefixed message');
```

### CommonJS
```javascript

var log = require('loglevel');
var prefix = require('loglevel-prefix');
prefix(log);

// or
// var log = require('loglevel-prefix')(require('loglevel'));

log.warn('prefixed message');
```

### AMD
```javascript
define(['loglevel', 'loglevel-prefix'], function(log, prefix) {
  prefix(log);
  log.warn('prefixed message');
});
```

## Custom options

```javascript
import log from 'loglevel';
import prefix from 'loglevel-prefix';

prefix(log, {
  template: '[%t] %l (%n) static text:',
  timestampFormatter: date => date.toISOString(),
  levelFormatter: level => level.charAt(0).toUpperCase() + level.substr(1),
  nameFormatter: name => name || 'global'
});

log.warn('prefixed message');
```

Output
```
[2017-05-29T16:53:46.000Z] Warn (global) static text: prefixed message
```

## Example

```javascript
// moduleA.js
import log from 'loglevel';

export default function () {
  log.warn('message from moduleA');
}
```

```javascript
// moduleB.js
import log from 'loglevel';

const logger = log.getLogger('moduleB');

export default function () {
  logger.warn('message from moduleB');
}
```

```javascript
// moduleC.js
import log from 'loglevel';

export default function () {
  const logger = log.getLogger('moduleC');
  logger.warn('message from moduleC');
}
```

```javascript
// main.js
import log from 'loglevel';
import prefix from 'loglevel-prefix';

import a from './moduleA';
import b from './moduleB';
import c from './moduleC';

log.warn('message from root %s prefixing', 'before');

prefix(log, {
  template: '[%t] %l (%n):',
});

log.warn('message from root %s prefixing', 'after');

a();
b();
c();
```

Output
```
message from root before prefixing
[16:53:46] WARN (root): message from root after prefixing
[16:53:46] WARN (root): message from moduleA
message from moduleB
[16:53:46] WARN (moduleC): message from moduleC
```

## Errors

```javascript
// main.js
import log from 'loglevel';
import prefix from 'loglevel-prefix';

log.setLevel('info');
prefix(log);

log.info('message from root after prefixing');

try {
  prefix(log, {
    timestampFormatter: date => date.toISOString()
  });
} catch(e) {
  log.error(e);
};

log.info('message from root after pre-prefixing');

const logger = log.getLogger('main');

try {
  prefix(logger, {
    template: '[%t] %l (%n):'
  });
} catch(e) {
  logger.error(e);
};

logger.info('message from child logger');
```

Output
```
[16:53:46] INFO: message from root after prefixing
[16:53:46] ERROR: TypeError: You can assign a prefix only one time
[16:53:46] INFO: message from root after pre-prefixing
[16:53:46] ERROR: TypeError: Argument is not a root loglevel object
[16:53:46] INFO: message from child logger
```

---
_Source: https://npm.io/package/loglevel-prefix · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
