nightingale 15.0.0 → 16.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/README.md +204 -57
- package/dist/definitions/config.d.ts +1 -1
- package/dist/definitions/debug/debug.d.ts +5 -0
- package/dist/definitions/debug/debug.d.ts.map +1 -0
- package/dist/definitions/debug/debug.test.d.ts +2 -0
- package/dist/definitions/debug/debug.test.d.ts.map +1 -0
- package/dist/definitions/formatter-utils/formatObject.d.ts +9 -0
- package/dist/definitions/formatter-utils/formatObject.d.ts.map +1 -0
- package/dist/definitions/formatter-utils/formatObject.test.d.ts +2 -0
- package/dist/definitions/formatter-utils/formatObject.test.d.ts.map +1 -0
- package/dist/definitions/formatter-utils/formatRecordToString.d.ts +4 -0
- package/dist/definitions/formatter-utils/formatRecordToString.d.ts.map +1 -0
- package/dist/definitions/formatter-utils/index.d.ts +15 -0
- package/dist/definitions/formatter-utils/index.d.ts.map +1 -0
- package/dist/definitions/formatter-utils/index.test.d.ts +2 -0
- package/dist/definitions/formatter-utils/index.test.d.ts.map +1 -0
- package/dist/definitions/formatter-utils/levelToStyles.d.ts +3 -0
- package/dist/definitions/formatter-utils/levelToStyles.d.ts.map +1 -0
- package/dist/definitions/formatter-utils/levelToSymbol.d.ts +3 -0
- package/dist/definitions/formatter-utils/levelToSymbol.d.ts.map +1 -0
- package/dist/definitions/formatter-utils/styleToHexColor.d.ts +7 -0
- package/dist/definitions/formatter-utils/styleToHexColor.d.ts.map +1 -0
- package/dist/definitions/formatter-utils/styleToHtmlStyle.d.ts +109 -0
- package/dist/definitions/formatter-utils/styleToHtmlStyle.d.ts.map +1 -0
- package/dist/definitions/formatters/ANSIFormatter.d.ts +6 -0
- package/dist/definitions/formatters/ANSIFormatter.d.ts.map +1 -0
- package/dist/definitions/formatters/ANSIFormatter.test.d.ts +2 -0
- package/dist/definitions/formatters/ANSIFormatter.test.d.ts.map +1 -0
- package/dist/definitions/formatters/BrowserConsoleFormatter.d.ts +10 -0
- package/dist/definitions/formatters/BrowserConsoleFormatter.d.ts.map +1 -0
- package/dist/definitions/formatters/BrowserConsoleFormatter.test.d.ts +2 -0
- package/dist/definitions/formatters/BrowserConsoleFormatter.test.d.ts.map +1 -0
- package/dist/definitions/formatters/HTMLFormatter.d.ts +5 -0
- package/dist/definitions/formatters/HTMLFormatter.d.ts.map +1 -0
- package/dist/definitions/formatters/HTMLFormatter.test.d.ts +2 -0
- package/dist/definitions/formatters/HTMLFormatter.test.d.ts.map +1 -0
- package/dist/definitions/formatters/JSONFormatter.d.ts +4 -0
- package/dist/definitions/formatters/JSONFormatter.d.ts.map +1 -0
- package/dist/definitions/formatters/JSONFormatter.test.d.ts +2 -0
- package/dist/definitions/formatters/JSONFormatter.test.d.ts.map +1 -0
- package/dist/definitions/formatters/MarkdownFormatter.d.ts +5 -0
- package/dist/definitions/formatters/MarkdownFormatter.d.ts.map +1 -0
- package/dist/definitions/formatters/MarkdownFormatter.test.d.ts +2 -0
- package/dist/definitions/formatters/MarkdownFormatter.test.d.ts.map +1 -0
- package/dist/definitions/formatters/RawFormatter.d.ts +5 -0
- package/dist/definitions/formatters/RawFormatter.d.ts.map +1 -0
- package/dist/definitions/formatters/RawFormatter.test.d.ts +2 -0
- package/dist/definitions/formatters/RawFormatter.test.d.ts.map +1 -0
- package/dist/definitions/handlers/BrowserConsoleHandler.d.ts +14 -0
- package/dist/definitions/handlers/BrowserConsoleHandler.d.ts.map +1 -0
- package/dist/definitions/handlers/ConsoleCLIHandler.d.ts +12 -0
- package/dist/definitions/handlers/ConsoleCLIHandler.d.ts.map +1 -0
- package/dist/definitions/handlers/ConsoleHandler.d.ts +14 -0
- package/dist/definitions/handlers/ConsoleHandler.d.ts.map +1 -0
- package/dist/definitions/handlers/StringHandler.d.ts +9 -0
- package/dist/definitions/handlers/StringHandler.d.ts.map +1 -0
- package/dist/definitions/index.d.ts +18 -4
- package/dist/definitions/index.d.ts.map +1 -1
- package/dist/definitions/loggers/LoggerCLI.d.ts +23 -0
- package/dist/definitions/loggers/LoggerCLI.d.ts.map +1 -0
- package/dist/definitions/outputs/cliConsoleOutput.d.ts +3 -0
- package/dist/definitions/outputs/cliConsoleOutput.d.ts.map +1 -0
- package/dist/definitions/outputs/consoleOutput.d.ts +3 -0
- package/dist/definitions/outputs/consoleOutput.d.ts.map +1 -0
- package/dist/index-browser.es.js +924 -17
- package/dist/index-browser.es.js.map +1 -1
- package/dist/index-node20.mjs +1030 -0
- package/dist/index-node20.mjs.map +1 -0
- package/package.json +31 -30
- package/src/config.ts +12 -12
- package/src/debug/debug.test.ts +50 -0
- package/src/debug/debug.ts +100 -0
- package/src/formatter-utils/formatObject.test.ts +153 -0
- package/src/formatter-utils/formatObject.ts +462 -0
- package/src/formatter-utils/formatRecordToString.ts +67 -0
- package/src/formatter-utils/index.test.ts +33 -0
- package/src/formatter-utils/index.ts +20 -0
- package/src/formatter-utils/levelToStyles.ts +14 -0
- package/src/formatter-utils/levelToSymbol.ts +14 -0
- package/src/formatter-utils/styleToHexColor.ts +9 -0
- package/src/formatter-utils/styleToHtmlStyle.ts +69 -0
- package/src/formatters/ANSIFormatter.test.ts +27 -0
- package/src/formatters/ANSIFormatter.ts +68 -0
- package/src/formatters/BrowserConsoleFormatter.test.ts +59 -0
- package/src/formatters/BrowserConsoleFormatter.ts +45 -0
- package/src/formatters/HTMLFormatter.test.ts +23 -0
- package/src/formatters/HTMLFormatter.ts +28 -0
- package/src/formatters/JSONFormatter.test.ts +62 -0
- package/src/formatters/JSONFormatter.ts +62 -0
- package/src/formatters/MarkdownFormatter.test.ts +19 -0
- package/src/formatters/MarkdownFormatter.ts +31 -0
- package/src/formatters/RawFormatter.test.ts +21 -0
- package/src/formatters/RawFormatter.ts +13 -0
- package/src/handlers/BrowserConsoleHandler.ts +78 -0
- package/src/handlers/ConsoleCLIHandler.ts +41 -0
- package/src/handlers/ConsoleHandler.ts +55 -0
- package/src/handlers/StringHandler.ts +21 -0
- package/src/index.test.ts +28 -28
- package/src/index.ts +24 -10
- package/src/loggers/LoggerCLI.ts +103 -0
- package/src/outputs/cliConsoleOutput.ts +17 -0
- package/src/outputs/consoleOutput.ts +18 -0
- package/dist/index-node18.mjs +0 -120
- package/dist/index-node18.mjs.map +0 -1
- package/src/.eslintrc.json +0 -30
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,28 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [16.1.0](https://github.com/christophehurpeau/nightingale/compare/v16.0.0...v16.1.0) (2025-03-30)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* support async in logger cli group ([e27d763](https://github.com/christophehurpeau/nightingale/commit/e27d7638538690b73f45a286cc4c5bdba759f159))
|
|
11
|
+
|
|
12
|
+
## [16.0.0](https://github.com/christophehurpeau/nightingale/compare/v15.0.0...v16.0.0) (2025-03-30)
|
|
13
|
+
|
|
14
|
+
### ⚠ BREAKING CHANGES
|
|
15
|
+
|
|
16
|
+
* drop node 18
|
|
17
|
+
|
|
18
|
+
### Features
|
|
19
|
+
|
|
20
|
+
* add LoggerCLI ([f13942b](https://github.com/christophehurpeau/nightingale/commit/f13942baf4ec5582dadda8aafb719ee59ca92398))
|
|
21
|
+
* drop node 18 ([1b11a55](https://github.com/christophehurpeau/nightingale/commit/1b11a55dd24c9435be50519a748316079f554414))
|
|
22
|
+
|
|
23
|
+
Version bump for dependency: nightingale-levels
|
|
24
|
+
Version bump for dependency: nightingale-logger
|
|
25
|
+
Version bump for dependency: nightingale-types
|
|
26
|
+
|
|
27
|
+
|
|
6
28
|
## [15.0.0](https://github.com/christophehurpeau/nightingale/compare/v14.2.1...v15.0.0) (2023-12-25)
|
|
7
29
|
|
|
8
30
|
|
package/README.md
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
<
|
|
1
|
+
<h1 align="center">
|
|
2
2
|
nightingale
|
|
3
|
-
</
|
|
3
|
+
</h1>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
6
|
Logger for browser and node
|
|
7
7
|
</p>
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
|
-
<a href="https://npmjs.org/package/nightingale"><img src="https://img.shields.io/npm/v/nightingale.svg?style=flat-square"></a>
|
|
11
|
-
<a href="https://npmjs.org/package/nightingale"><img src="https://img.shields.io/npm/dw/nightingale.svg?style=flat-square"></a>
|
|
12
|
-
<a href="https://npmjs.org/package/nightingale"><img src="https://img.shields.io/node/v/nightingale.svg?style=flat-square"></a>
|
|
13
|
-
<a href="https://npmjs.org/package/nightingale"><img src="https://img.shields.io/npm/types/nightingale.svg?style=flat-square"></a>
|
|
10
|
+
<a href="https://npmjs.org/package/nightingale"><img src="https://img.shields.io/npm/v/nightingale.svg?style=flat-square" alt="npm version"></a>
|
|
11
|
+
<a href="https://npmjs.org/package/nightingale"><img src="https://img.shields.io/npm/dw/nightingale.svg?style=flat-square" alt="npm downloads"></a>
|
|
12
|
+
<a href="https://npmjs.org/package/nightingale"><img src="https://img.shields.io/node/v/nightingale.svg?style=flat-square" alt="node version"></a>
|
|
13
|
+
<a href="https://npmjs.org/package/nightingale"><img src="https://img.shields.io/npm/types/nightingale.svg?style=flat-square" alt="types"></a>
|
|
14
14
|
<a href="https://codecov.io/gh/christophehurpeau/nightingale"><img src="https://img.shields.io/codecov/c/github/christophehurpeau/nightingale/master.svg?style=flat-square"></a>
|
|
15
15
|
</p>
|
|
16
16
|
|
|
@@ -40,15 +40,14 @@ npm install --save nightingale nightingale-console
|
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
```js
|
|
43
|
-
import
|
|
44
|
-
import ConsoleHandler from 'nightingale-console';
|
|
43
|
+
import { configure, Logger, Level, ConsoleHandler } from "nightingale";
|
|
45
44
|
|
|
46
45
|
configure([
|
|
47
46
|
{
|
|
48
47
|
handlers: [new ConsoleHandler(Level.WARN)],
|
|
49
48
|
},
|
|
50
49
|
{
|
|
51
|
-
keys: [
|
|
50
|
+
keys: ["mylib", "myotherlib"],
|
|
52
51
|
handlers: [new ConsoleHandler(Level.ALL)],
|
|
53
52
|
},
|
|
54
53
|
{
|
|
@@ -63,12 +62,12 @@ configure([
|
|
|
63
62
|
]);
|
|
64
63
|
|
|
65
64
|
// in one of your controllers
|
|
66
|
-
const logger = new Logger(
|
|
67
|
-
logger.debug(
|
|
65
|
+
const logger = new Logger("app.controllers");
|
|
66
|
+
logger.debug("This is a log"); // will not be displayed
|
|
68
67
|
|
|
69
68
|
// in your server.js file
|
|
70
|
-
const logger = new Logger(
|
|
71
|
-
logger.debug(
|
|
69
|
+
const logger = new Logger("app.server");
|
|
70
|
+
logger.debug("This is a log"); // will be displayed
|
|
72
71
|
```
|
|
73
72
|
|
|
74
73
|
You can configure several handlers with different `Level`, like console, slack, sentry.
|
|
@@ -76,8 +75,8 @@ You can configure several handlers with different `Level`, like console, slack,
|
|
|
76
75
|
Ensure the configure is always called before the first log! For example:
|
|
77
76
|
|
|
78
77
|
```js
|
|
79
|
-
import
|
|
80
|
-
import
|
|
78
|
+
import "./configure-logger";
|
|
79
|
+
import "./myApp";
|
|
81
80
|
```
|
|
82
81
|
|
|
83
82
|
### In a library
|
|
@@ -87,13 +86,13 @@ npm install --save nightingale-logger
|
|
|
87
86
|
```
|
|
88
87
|
|
|
89
88
|
```js
|
|
90
|
-
import Logger from
|
|
89
|
+
import Logger from "nightingale-logger";
|
|
91
90
|
|
|
92
|
-
const logger = new Logger(
|
|
91
|
+
const logger = new Logger("mylib");
|
|
93
92
|
|
|
94
|
-
logger.info(
|
|
95
|
-
logger.warn(
|
|
96
|
-
logger.success(
|
|
93
|
+
logger.info("This is a log");
|
|
94
|
+
logger.warn("This is a warning !");
|
|
95
|
+
logger.success("It works !");
|
|
97
96
|
```
|
|
98
97
|
|
|
99
98
|
### In the browser
|
|
@@ -107,12 +106,12 @@ npm install --save nightingale nightingale-browser-console
|
|
|
107
106
|

|
|
108
107
|
|
|
109
108
|
```js
|
|
110
|
-
import { configure, levels } from
|
|
111
|
-
import { BrowserConsoleHandler } from
|
|
109
|
+
import { configure, levels } from "nightingale";
|
|
110
|
+
import { BrowserConsoleHandler } from "nightingale-browser-console";
|
|
112
111
|
|
|
113
112
|
configure([
|
|
114
113
|
{
|
|
115
|
-
key:
|
|
114
|
+
key: "app",
|
|
116
115
|
handlers: [new BrowserConsoleHandler(Level.INFO)],
|
|
117
116
|
},
|
|
118
117
|
]);
|
|
@@ -140,65 +139,213 @@ Values are minimatch patterns and separated by `,`.
|
|
|
140
139
|
### Add information on a request
|
|
141
140
|
|
|
142
141
|
```js
|
|
143
|
-
import Koa from
|
|
144
|
-
import Logger, { configure, Level } from
|
|
145
|
-
import { ConsoleHandler } from
|
|
146
|
-
import webProcessor from
|
|
142
|
+
import Koa from "koa";
|
|
143
|
+
import Logger, { configure, Level } from "nightingale";
|
|
144
|
+
import { ConsoleHandler } from "nightinale-console";
|
|
145
|
+
import webProcessor from "nightinale-web-processor";
|
|
147
146
|
|
|
148
147
|
const app = new Koa();
|
|
149
|
-
const logger = new Logger(
|
|
148
|
+
const logger = new Logger("app");
|
|
150
149
|
|
|
151
150
|
configure([
|
|
152
151
|
{
|
|
153
|
-
key:
|
|
152
|
+
key: "app",
|
|
154
153
|
handlers: [new ConsoleHandler(Level.ALL)],
|
|
155
154
|
processors: [webProcessor],
|
|
156
155
|
},
|
|
157
156
|
]);
|
|
158
157
|
|
|
159
158
|
app.use(async (ctx) => {
|
|
160
|
-
logger.info(
|
|
159
|
+
logger.info("something to log !", { context: ctx });
|
|
161
160
|
});
|
|
162
161
|
|
|
163
162
|
app.use(async (ctx) => {
|
|
164
|
-
ctx.logger.info(
|
|
163
|
+
ctx.logger.info("something to log !", { context: ctx });
|
|
165
164
|
});
|
|
166
165
|
```
|
|
167
166
|
|
|
168
|
-
##
|
|
169
|
-
|
|
170
|
-
### Handler
|
|
167
|
+
## Handler
|
|
171
168
|
|
|
172
169
|
How a log is processed: has a layout and an output.
|
|
173
170
|
Also define a minimum level.
|
|
174
171
|
|
|
172
|
+
### Included handlers
|
|
173
|
+
|
|
174
|
+
#### ConsoleHandler
|
|
175
|
+
|
|
176
|
+
Log using `console`.
|
|
177
|
+
|
|
178
|
+
```js
|
|
179
|
+
import { configure, levels, ConsoleHandler } from "nightingale";
|
|
180
|
+
|
|
181
|
+
configure([
|
|
182
|
+
{
|
|
183
|
+
key: "app",
|
|
184
|
+
handlers: [new ConsoleHandler(Level.INFO)],
|
|
185
|
+
},
|
|
186
|
+
]);
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**DEBUG**
|
|
190
|
+
|
|
191
|
+
`DEBUG=* node .`
|
|
192
|
+
|
|
193
|
+
```js
|
|
194
|
+
DEBUG='*'; # debug everything
|
|
195
|
+
DEBUG=app # debug for logger with key 'app'
|
|
196
|
+
DEBUG=app:* # debug for logger with key 'app' and all its children
|
|
197
|
+
DEBUG=app,nightingale # debug for logger with key 'app' and 'nightingale'
|
|
198
|
+
DEBUG=/^app/ # debug for logger with key starting with 'app'
|
|
199
|
+
DEBUG=/^(app|nightingale$)/ # debug for logger with key starting with 'app' and key 'nightingale'
|
|
200
|
+
DEBUG='*,-app'; # debug everything except app
|
|
201
|
+
DEBUG='*,-app:*'; # debug everything except app and all its children
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**Use source maps to display error stack trace**
|
|
205
|
+
|
|
206
|
+
Since node 12.12.0, you can use `--enable-source-maps` while running node.
|
|
207
|
+
|
|
208
|
+

|
|
209
|
+
|
|
210
|
+
#### BrowserConsoleHandler
|
|
211
|
+
|
|
212
|
+
**Usage**
|
|
213
|
+
|
|
214
|
+
```js
|
|
215
|
+
import { configure, levels } from "nightingale";
|
|
216
|
+
import { ConsoleHandler } from "nightingale-browser-console";
|
|
217
|
+
|
|
218
|
+
configure([{ handlers: [new ConsoleHandler(Level.INFO)] }]);
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**Theme**
|
|
222
|
+
|
|
223
|
+
If you have a dark console theme, you can set this config in your localStorage :
|
|
224
|
+
|
|
225
|
+
```js
|
|
226
|
+
localStorage.NIGHTINGALE_THEME = "dark";
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
You can also force this option:
|
|
230
|
+
|
|
231
|
+
```js
|
|
232
|
+
import { ConsoleHandler } from "nightingale-browser-console";
|
|
233
|
+
|
|
234
|
+
configure([{ handlers: [new ConsoleHandler(Level.INFO, { theme: "dark" })] }]);
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
**Debug with localStorage**
|
|
238
|
+
|
|
239
|
+
```js
|
|
240
|
+
localStorage.debug = "*"; // debug everything
|
|
241
|
+
localStorage.debug = "app"; // debug for logger with key 'app'
|
|
242
|
+
localStorage.debug = "app,nightingale"; // debug for logger with key 'app' and 'nightingale'
|
|
243
|
+
localStorage.debug = "/^app/"; //debug for logger with key starting with 'app'
|
|
244
|
+
localStorage.debug = "/^(app|nightingale$)/"; // debug for logger with key starting with 'app' and key 'nightingale'
|
|
245
|
+
localStorage.debug = "*,-app"; // debug everything except app
|
|
246
|
+
localStorage.debug = "*,-app:*"; // debug everything except app and all its children
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
**Debug with query, in the url**
|
|
250
|
+
|
|
251
|
+
```js
|
|
252
|
+
?DEBUG='*'; // debug everything
|
|
253
|
+
?DEBUG=app // debug for logger with key 'app'
|
|
254
|
+
?DEBUG=app,nightingale // debug for logger with key 'app' and 'nightingale'
|
|
255
|
+
?DEBUG=/^app/ // debug for logger with key starting with 'app'
|
|
256
|
+
?DEBUG=/^(app|nightingale$)/ // debug for logger with key starting with 'app' and key 'nightingale'
|
|
257
|
+
?DEBUG=*,-app // debug everything except app
|
|
258
|
+
?DEBUG=*,-app:* // debug everything except app and all its children
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
**Use source maps to display error stack trace**
|
|
262
|
+
|
|
263
|
+
In production:
|
|
264
|
+
|
|
265
|
+
Send your log to an external tool like [sentry](https://sentry.io/). Sentry allows you to send the source maps after building (if you use webpack, you can use `hidden-source-map` to generate `.map` files, send them to sentry, and remove them so they are not accessible).
|
|
266
|
+
|
|
267
|
+
In development:
|
|
268
|
+
|
|
269
|
+
- Configure your build tool to generate sourcemaps. For webpack: use proper [`devtool` configuration](https://webpack.js.org/configuration/devtool/). For best stack trace, use `source-map` but it's the slowest option.
|
|
270
|
+
- Make sure your project uses [source-map-support](https://www.npmjs.com/package/source-map-support) or similar tool. If not, you can install and simply import `source-map-support/register`.
|
|
271
|
+
|
|
272
|
+
#### StringHandler
|
|
273
|
+
|
|
274
|
+
Useful for testing purposes
|
|
275
|
+
|
|
276
|
+
```js
|
|
277
|
+
import { configure, levels, StringHandler } from "nightingale";
|
|
278
|
+
import { BrowserConsoleHandler } from "nightingale-browser-console";
|
|
279
|
+
|
|
280
|
+
const stringHandler = new StringHandler(Level.INFO);
|
|
281
|
+
|
|
282
|
+
configure([
|
|
283
|
+
{
|
|
284
|
+
key: "app",
|
|
285
|
+
handlers: [stringHandler],
|
|
286
|
+
},
|
|
287
|
+
]);
|
|
288
|
+
|
|
289
|
+
console.log(stringHandler.string);
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### More handlers
|
|
293
|
+
|
|
175
294
|
You can find handlers [on npm](https://www.npmjs.com/search?q=nightingale-handler)
|
|
176
295
|
|
|
177
|
-
- [ConsoleHandler](https://npmjs.org/package/nightingale-console)
|
|
178
|
-
- [BrowserConsoleHandler](https://npmjs.org/package/nightingale-browser-console)
|
|
179
|
-
- [StringHandler](https://npmjs.org/package/nightingale-string)
|
|
180
296
|
- [SlackHandler](https://npmjs.org/package/nightingale-slack)
|
|
181
297
|
- [ReactNativeConsoleHandler](https://npmjs.org/package/nightingale-react-native-console)
|
|
182
298
|
- [WinstonAdapterHandler](https://npmjs.org/package/nightingale-winston-adapter)
|
|
183
299
|
|
|
184
300
|
### Formatter
|
|
185
301
|
|
|
186
|
-
You can find formatters [on npm](https://www.npmjs.com/search?q=nightingale-formatter)
|
|
187
|
-
|
|
188
302
|
How the record is formatted, with its colors.
|
|
189
303
|
|
|
304
|
+
### Included formatters
|
|
305
|
+
|
|
306
|
+
#### Raw
|
|
307
|
+
|
|
308
|
+
```js
|
|
309
|
+
import { RawFormatter } from "nightingale";
|
|
310
|
+
|
|
311
|
+
RawFormatter.format(record);
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
#### Markdown
|
|
315
|
+
|
|
316
|
+
```js
|
|
317
|
+
import { MarkdownFormatter } from "nightingale";
|
|
318
|
+
|
|
319
|
+
MarkdownFormatter.format(record);
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
#### JSON
|
|
323
|
+
|
|
324
|
+
```js
|
|
325
|
+
import { JSONFormatter } from "nightingale";
|
|
326
|
+
|
|
327
|
+
JSONFormatter.format(record);
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
### More formatters
|
|
331
|
+
|
|
332
|
+
You can find formatters [on npm](https://www.npmjs.com/search?q=nightingale-formatter)
|
|
333
|
+
|
|
190
334
|
- [AnsiFormatter](https://npmjs.org/package/nightingale-ansi-formatter)
|
|
191
|
-
- [JsonFormatter](https://npmjs.org/package/nightingale-json-formatter)
|
|
192
|
-
- [MarkdownFormatter](https://npmjs.org/package/nightingale-markdown-formatter)
|
|
193
335
|
|
|
194
336
|
### Output
|
|
195
337
|
|
|
196
338
|
Where the log is sent: console, file, ...
|
|
197
339
|
|
|
198
|
-
|
|
340
|
+
### Included handlers
|
|
341
|
+
|
|
342
|
+
#### consoleOutput
|
|
343
|
+
|
|
344
|
+
Output using `console.log/error` or `process.stdout/stderr`
|
|
199
345
|
|
|
200
|
-
|
|
201
|
-
|
|
346
|
+
### More outputs
|
|
347
|
+
|
|
348
|
+
You can find outputs [on npm](https://www.npmjs.com/search?q=nightingale-output)
|
|
202
349
|
|
|
203
350
|
### Processor
|
|
204
351
|
|
|
@@ -207,7 +354,7 @@ Add extra data in the record
|
|
|
207
354
|
## Extends Logger
|
|
208
355
|
|
|
209
356
|
```js
|
|
210
|
-
import { Logger } from
|
|
357
|
+
import { Logger } from "nightingale";
|
|
211
358
|
|
|
212
359
|
class MyCustomLogger extends Logger {
|
|
213
360
|
myCustomMethod(message) {
|
|
@@ -215,14 +362,14 @@ class MyCustomLogger extends Logger {
|
|
|
215
362
|
}
|
|
216
363
|
}
|
|
217
364
|
|
|
218
|
-
const logger = new MyCustomLogger(
|
|
365
|
+
const logger = new MyCustomLogger("app");
|
|
219
366
|
```
|
|
220
367
|
|
|
221
368
|
## Global processors
|
|
222
369
|
|
|
223
370
|
```js
|
|
224
|
-
import { configure } from
|
|
225
|
-
import errorProcessor from
|
|
371
|
+
import { configure } from "nightingale";
|
|
372
|
+
import errorProcessor from "./myErrorProcessor";
|
|
226
373
|
|
|
227
374
|
configure([{ processors: [errorProcessor] }]);
|
|
228
375
|
```
|
|
@@ -230,8 +377,8 @@ configure([{ processors: [errorProcessor] }]);
|
|
|
230
377
|
## Global handlers
|
|
231
378
|
|
|
232
379
|
```js
|
|
233
|
-
import { addGlobalHandler, levels } from
|
|
234
|
-
import { SentryHandler } from
|
|
380
|
+
import { addGlobalHandler, levels } from "nightingale";
|
|
381
|
+
import { SentryHandler } from "nightingale-sentry";
|
|
235
382
|
|
|
236
383
|
configure([{ handlers: [new SentryHandler(Level.ERROR)] }]);
|
|
237
384
|
```
|
|
@@ -241,9 +388,9 @@ configure([{ handlers: [new SentryHandler(Level.ERROR)] }]);
|
|
|
241
388
|
You can create children.
|
|
242
389
|
|
|
243
390
|
```js
|
|
244
|
-
import { Logger } from
|
|
245
|
-
const loggerApp = new Logger(
|
|
246
|
-
const loggerMyService = loggerApp.child(
|
|
391
|
+
import { Logger } from "nightingale";
|
|
392
|
+
const loggerApp = new Logger("app");
|
|
393
|
+
const loggerMyService = loggerApp.child("myService");
|
|
247
394
|
// loggerMyService key is `app.myService`
|
|
248
395
|
```
|
|
249
396
|
|
|
@@ -252,13 +399,13 @@ const loggerMyService = loggerApp.child('myService');
|
|
|
252
399
|
You can use context to add data to each log.
|
|
253
400
|
|
|
254
401
|
```js
|
|
255
|
-
import { Logger } from
|
|
256
|
-
const loggerMyService = new Logger(
|
|
402
|
+
import { Logger } from "nightingale";
|
|
403
|
+
const loggerMyService = new Logger("app.myService");
|
|
257
404
|
|
|
258
405
|
export function someAction(arg1) {
|
|
259
406
|
const logger = loggerMyService.context({ arg1 });
|
|
260
|
-
logger.info(
|
|
407
|
+
logger.info("starting");
|
|
261
408
|
// do stuff
|
|
262
|
-
logger.info(
|
|
409
|
+
logger.info("done");
|
|
263
410
|
}
|
|
264
411
|
```
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Config } from
|
|
1
|
+
import type { Config } from "nightingale-logger";
|
|
2
2
|
export declare function configure(config: Config[]): void;
|
|
3
3
|
export declare function addConfig(config: Config, unshift?: boolean): void;
|
|
4
4
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Level } from "nightingale-levels";
|
|
2
|
+
export type DebugValueType = RegExp | string[] | string;
|
|
3
|
+
export type FindDebugLevel = (minLevel: Level, key: string) => Level;
|
|
4
|
+
export declare function createFindDebugLevel(debugValue?: DebugValueType): FindDebugLevel;
|
|
5
|
+
//# sourceMappingURL=debug.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../src/debug/debug.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAK3C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC;AAqBxD,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,KAAK,CAAC;AAErE,wBAAgB,oBAAoB,CAClC,UAAU,CAAC,EAAE,cAAc,GAC1B,cAAc,CAoEhB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.test.d.ts","sourceRoot":"","sources":["../../../src/debug/debug.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Styles } from "nightingale-types";
|
|
2
|
+
export interface FormatObjectOptions {
|
|
3
|
+
padding?: string;
|
|
4
|
+
maxDepth?: number;
|
|
5
|
+
}
|
|
6
|
+
export type StyleFn = (styles: Styles, value: string) => string;
|
|
7
|
+
export type ObjectStyles<Keys extends string = string> = Record<Keys, Styles>;
|
|
8
|
+
export declare function formatObject(object: Record<string, unknown>, styleFn?: StyleFn, objectStyles?: ObjectStyles, { padding, maxDepth }?: FormatObjectOptions): string;
|
|
9
|
+
//# sourceMappingURL=formatObject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatObject.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/formatObject.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;AAEhE,MAAM,MAAM,YAAY,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AA4a9E,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,GAAE,OAAmB,EAC5B,YAAY,CAAC,EAAE,YAAY,EAC3B,EAAE,OAAc,EAAE,QAAa,EAAE,GAAE,mBAAwB,GAC1D,MAAM,CAkBR"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatObject.test.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/formatObject.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { LogRecord, Metadata } from "nightingale-types";
|
|
2
|
+
import type { StyleFn } from "./formatObject";
|
|
3
|
+
export declare function formatRecordToString<T extends Metadata>(record: LogRecord<T>, style: StyleFn): string;
|
|
4
|
+
//# sourceMappingURL=formatRecordToString.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatRecordToString.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/formatRecordToString.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAgB,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAK5D,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,QAAQ,EACrD,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,OAAO,GACb,MAAM,CAyDR"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { LogRecord, Metadata } from "nightingale-types";
|
|
2
|
+
export { levelToStyles } from "./levelToStyles";
|
|
3
|
+
export { levelToSymbol } from "./levelToSymbol";
|
|
4
|
+
export { styleToHtmlStyleThemeDark, styleToHtmlStyleThemeLight, } from "./styleToHtmlStyle";
|
|
5
|
+
export type { StyleToHtmlStyle } from "./styleToHtmlStyle";
|
|
6
|
+
export { styleToHexColor } from "./styleToHexColor";
|
|
7
|
+
export { formatObject } from "./formatObject";
|
|
8
|
+
export { formatRecordToString } from "./formatRecordToString";
|
|
9
|
+
export interface NightingaleFormatter {
|
|
10
|
+
format: <T extends Metadata>(record: LogRecord<T>) => string;
|
|
11
|
+
}
|
|
12
|
+
export interface StringArrayNightingaleFormatter {
|
|
13
|
+
format: <T extends Metadata>(record: LogRecord<T>) => string[];
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,CAAC,CAAC,SAAS,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;CAC9D;AAED,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,CAAC,CAAC,SAAS,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;CAChE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/index.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"levelToStyles.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/levelToStyles.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAE/D,eAAO,MAAM,aAAa,EAAE,aAS3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"levelToSymbol.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/levelToSymbol.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE7D,eAAO,MAAM,aAAa,EAAE,aAS3B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const styleToHexColor: {
|
|
2
|
+
readonly orange: "ff5f00";
|
|
3
|
+
readonly grayLight: "808080";
|
|
4
|
+
readonly "gray-light": "808080";
|
|
5
|
+
};
|
|
6
|
+
export type StyleToHexColor = Readonly<Record<keyof typeof styleToHexColor, string>>;
|
|
7
|
+
//# sourceMappingURL=styleToHexColor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styleToHexColor.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/styleToHexColor.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;;;CAIlB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,QAAQ,CACpC,MAAM,CAAC,MAAM,OAAO,eAAe,EAAE,MAAM,CAAC,CAC7C,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
export interface HtmlStyle {
|
|
2
|
+
readonly open: string;
|
|
3
|
+
readonly close: string;
|
|
4
|
+
}
|
|
5
|
+
export declare const styleToHtmlStyleThemeLight: {
|
|
6
|
+
readonly bold: {
|
|
7
|
+
readonly open: "font-weight: bold";
|
|
8
|
+
readonly close: "font-weight: normal";
|
|
9
|
+
};
|
|
10
|
+
readonly italic: {
|
|
11
|
+
readonly open: "font-style: italic";
|
|
12
|
+
readonly close: "font-style: normal";
|
|
13
|
+
};
|
|
14
|
+
readonly underline: {
|
|
15
|
+
readonly open: "text-decoration: underline";
|
|
16
|
+
readonly close: "text-decoration: none";
|
|
17
|
+
};
|
|
18
|
+
readonly inverse: {
|
|
19
|
+
readonly open: "unicode-bidi: bidi-override; direction: rtl";
|
|
20
|
+
readonly close: "unicode-bidi: normal; direction: ltr";
|
|
21
|
+
};
|
|
22
|
+
readonly strikethrough: {
|
|
23
|
+
readonly open: "text-decoration: line-through";
|
|
24
|
+
readonly close: "text-decoration: none";
|
|
25
|
+
};
|
|
26
|
+
readonly black: {
|
|
27
|
+
readonly open: "color: black";
|
|
28
|
+
readonly close: "color: currentcolor";
|
|
29
|
+
};
|
|
30
|
+
readonly red: {
|
|
31
|
+
readonly open: "color: #ff0020";
|
|
32
|
+
readonly close: "color: currentcolor";
|
|
33
|
+
};
|
|
34
|
+
readonly green: {
|
|
35
|
+
readonly open: "color: #00b317";
|
|
36
|
+
readonly close: "color: currentcolor";
|
|
37
|
+
};
|
|
38
|
+
readonly yellow: {
|
|
39
|
+
readonly open: "color: #ffcc00";
|
|
40
|
+
readonly close: "color: currentcolor";
|
|
41
|
+
};
|
|
42
|
+
readonly blue: {
|
|
43
|
+
readonly open: "color: #00a0ff";
|
|
44
|
+
readonly close: "color: currentcolor";
|
|
45
|
+
};
|
|
46
|
+
readonly magenta: {
|
|
47
|
+
readonly open: "color: #ff00a0";
|
|
48
|
+
readonly close: "color: currentcolor";
|
|
49
|
+
};
|
|
50
|
+
readonly cyan: {
|
|
51
|
+
readonly open: "color: #00cfd8";
|
|
52
|
+
readonly close: "color: currentcolor";
|
|
53
|
+
};
|
|
54
|
+
readonly white: {
|
|
55
|
+
readonly open: "color: white";
|
|
56
|
+
readonly close: "color: currentcolor";
|
|
57
|
+
};
|
|
58
|
+
readonly gray: {
|
|
59
|
+
readonly open: "color: gray";
|
|
60
|
+
readonly close: "color: currentcolor";
|
|
61
|
+
};
|
|
62
|
+
readonly bgBlack: {
|
|
63
|
+
readonly open: "background: black";
|
|
64
|
+
readonly close: "background: initial";
|
|
65
|
+
};
|
|
66
|
+
readonly bgRed: {
|
|
67
|
+
readonly open: "background: #ff0020";
|
|
68
|
+
readonly close: "background: initial";
|
|
69
|
+
};
|
|
70
|
+
readonly bgGreen: {
|
|
71
|
+
readonly open: "background: #00b317";
|
|
72
|
+
readonly close: "background: initial";
|
|
73
|
+
};
|
|
74
|
+
readonly bgYellow: {
|
|
75
|
+
readonly open: "background: #ffcc00";
|
|
76
|
+
readonly close: "background: initial";
|
|
77
|
+
};
|
|
78
|
+
readonly bgBlue: {
|
|
79
|
+
readonly open: "background: #00a0ff";
|
|
80
|
+
readonly close: "background: initial";
|
|
81
|
+
};
|
|
82
|
+
readonly bgMagenta: {
|
|
83
|
+
readonly open: "background: #ff00a0";
|
|
84
|
+
readonly close: "background: initial";
|
|
85
|
+
};
|
|
86
|
+
readonly bgCyan: {
|
|
87
|
+
readonly open: "background: #00cfd8";
|
|
88
|
+
readonly close: "background: initial";
|
|
89
|
+
};
|
|
90
|
+
readonly bgWhite: {
|
|
91
|
+
readonly open: "background: white";
|
|
92
|
+
readonly close: "background: initial";
|
|
93
|
+
};
|
|
94
|
+
readonly orange: {
|
|
95
|
+
readonly open: "color: #ff5f00";
|
|
96
|
+
readonly close: "color: currentcolor";
|
|
97
|
+
};
|
|
98
|
+
readonly grayLight: {
|
|
99
|
+
readonly open: "color: #808080";
|
|
100
|
+
readonly close: "color: currentcolor";
|
|
101
|
+
};
|
|
102
|
+
readonly "gray-light": {
|
|
103
|
+
readonly open: "color: #808080";
|
|
104
|
+
readonly close: "color: currentcolor";
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
export type StyleToHtmlStyle = Readonly<Record<keyof typeof styleToHtmlStyleThemeLight, HtmlStyle>>;
|
|
108
|
+
export declare const styleToHtmlStyleThemeDark: StyleToHtmlStyle;
|
|
109
|
+
//# sourceMappingURL=styleToHtmlStyle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styleToHtmlStyle.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/styleToHtmlStyle.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgD7B,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CACrC,MAAM,CAAC,MAAM,OAAO,0BAA0B,EAAE,SAAS,CAAC,CAC3D,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,gBAOvC,CAAC"}
|