UNPKG

4.04 kBMarkdownView Raw
1# loglevel-plugin-prefix
2Plugin for [loglevel](https://github.com/pimterry/loglevel) message prefixing
3
4## Installation
5
6```sh
7npm install loglevel-plugin-prefix --save
8```
9
10## API
11
12```javascript
13apply(log[, options]);
14```
15
16This method applies the plugin to the logger.
17
18**log** - loglevel logger
19
20**options** - configuration object
21
22```javascript
23var defaults = {
24 template: '[%t] %l:',
25 timestampFormatter: function (date) {
26 return date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, '$1');
27 },
28 levelFormatter: function (level) {
29 return level.toUpperCase();
30 },
31 nameFormatter: function (name) {
32 return name || 'root';
33 }
34};
35```
36
37Plugin formats the prefix using **template** option as a printf-like format.
38
39The **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:
40
41- %t - timestamp of message
42- %l - level of message
43- %n - name of logger
44
45The **timestampFormatter**, **levelFormatter** and **nameFormatter** is a functions for formatting corresponding values
46
47## Base usage
48
49### Browser directly
50```html
51<script src="https://unpkg.com/loglevel/dist/loglevel.min.js"></script>
52<script src="https://unpkg.com/loglevel-plugin-prefix/dist/loglevel-plugin-prefix.min.js"></script>
53
54<script>
55 var logger = log.noConflict();
56 var prefixer = prefix.noConflict();
57 prefixer.apply(logger);
58 logger.warn('prefixed message');
59</script>
60```
61
62Output
63```
64[16:53:46] WARN: prefixed message
65```
66
67### ES6
68```javascript
69import log from 'loglevel';
70import prefix from 'loglevel-plugin-prefix';
71
72prefix.apply(log);
73log.warn('prefixed message');
74```
75
76### CommonJS
77```javascript
78var log = require('loglevel');
79var prefix = require('loglevel-plugin-prefix');
80
81prefix.apply(log);
82log.warn('prefixed message');
83```
84
85### AMD
86```javascript
87define(['loglevel', 'loglevel-plugin-prefix'], function(log, prefix) {
88 prefix.apply(log);
89 log.warn('prefixed message');
90});
91```
92
93## Custom options
94
95```javascript
96var log = require('loglevel');
97var prefix = require('loglevel-plugin-prefix');
98
99prefix.apply(log, {
100 template: '[%t] %l (%n) static text:',
101 timestampFormatter: function (date) { return date.toISOString() },
102 levelFormatter: function (level) { return level.charAt(0).toUpperCase() + level.substr(1) },
103 nameFormatter: function (name) { return name || 'global' }
104});
105
106log.warn('prefixed message');
107```
108
109Output
110```
111[2017-05-29T12:53:46.000Z] Warn (global) static text: prefixed message
112```
113
114## Example
115
116```javascript
117// moduleA.js
118var log = require('loglevel');
119
120module.exports = function () {
121 log.warn('message from moduleA');
122}
123```
124
125```javascript
126// moduleB.js
127var log = require('loglevel');
128
129var logger = log.getLogger('moduleB');
130
131module.exports = function () {
132 logger.warn('message from moduleB');
133}
134```
135
136```javascript
137// moduleC.js
138var log = require('loglevel');
139
140module.exports = function () {
141 var logger = log.getLogger('moduleC');
142 logger.warn('message from moduleC');
143}
144```
145
146```javascript
147// main.js
148var log = require('loglevel');
149var prefix = require('loglevel-plugin-prefix');
150
151var a = require('./moduleA');
152var b = require('./moduleB');
153var c = require('./moduleC');
154
155log.warn('message from root %s prefixing', 'before');
156
157prefix.apply(log, { template: '[%t] %l (%n):' });
158
159log.warn('message from root %s prefixing', 'after');
160
161a();
162b();
163c();
164
165prefix.apply(log, {
166 template: '[%t] %l:',
167 timestampFormatter: function (date) { return date.toISOString() }
168});
169
170log.warn('message from root after reapplying');
171```
172
173Output
174```
175message from root before prefixing
176[16:53:46] WARN (root): message from root after prefixing
177[16:53:46] WARN (root): message from moduleA
178message from moduleB
179[16:53:46] WARN (moduleC): message from moduleC
180[2017-05-29T12:53:46.000Z] WARN: message from root after reapplying
181```