1 | const util = require('util');
|
2 | const color = require('chalk');
|
3 | const { parse } = require('url');
|
4 | const stackParser = require('error-stack-parser');
|
5 | const httpstatus = require('http-status');
|
6 |
|
7 | const explain = require('./explainer');
|
8 |
|
9 | class Logger {
|
10 | static printRequestResponse(context) {
|
11 | const { request, response, params } = context;
|
12 | const { method } = request;
|
13 | const { pathname, _query } = parse(context.request.url, true);
|
14 | const { statusCode } = response;
|
15 |
|
16 | console.log(
|
17 | color`{green ●} {magenta ${method}} {bold ${pathname}} → {red ${statusCode}} ${
|
18 | httpstatus[statusCode]
|
19 | }
|
20 | {gray Params}
|
21 | ${util
|
22 | .inspect(params, { compact: false, colors: true, sorted: true })
|
23 | .slice(2, -2)}`
|
24 | );
|
25 | }
|
26 |
|
27 | static printError(error, layer = 'General') {
|
28 | console.error(
|
29 | color` {bold.red Error} {bold.underline ${error.message}}
|
30 | {gray Explanation} \n ${explain.for(error)}
|
31 | \n {gray Stack trace}`
|
32 | );
|
33 |
|
34 | for (let message of stackParser.parse(error)) {
|
35 | console.error(color` - {yellow ${message.functionName}}
|
36 | {bold ${message.fileName}}:{bold.underline.cyan ${message.lineNumber}}`);
|
37 | }
|
38 | }
|
39 | }
|
40 |
|
41 | module.exports = Logger;
|