@jayfong/x-server 2.49.4 → 2.50.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/lib/_cjs/core/server.js +5 -1
- package/lib/_cjs/services/log.js +53 -22
- package/lib/core/server.js +4 -0
- package/lib/services/log.d.ts +10 -3
- package/lib/services/log.js +53 -22
- package/package.json +1 -1
package/lib/_cjs/core/server.js
CHANGED
|
@@ -4,6 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
exports.__esModule = true;
|
|
5
5
|
exports.Server = void 0;
|
|
6
6
|
var _interopRequireWildcard2 = _interopRequireDefault(require("@babel/runtime/helpers/interopRequireWildcard"));
|
|
7
|
+
var _nodeProcess = _interopRequireDefault(require("node:process"));
|
|
7
8
|
var _fastify = _interopRequireDefault(require("fastify"));
|
|
8
9
|
var _vtils = require("vtils");
|
|
9
10
|
var _x = require("../x");
|
|
@@ -15,6 +16,9 @@ class Server {
|
|
|
15
16
|
this.fastify = void 0;
|
|
16
17
|
this.routes = [];
|
|
17
18
|
Server.options = options;
|
|
19
|
+
_nodeProcess.default.on('unhandledRejection', (reason, promise) => {
|
|
20
|
+
console.error('未捕获的错误', reason, promise);
|
|
21
|
+
});
|
|
18
22
|
}
|
|
19
23
|
async start() {
|
|
20
24
|
this.applyServices();
|
|
@@ -33,7 +37,7 @@ class Server {
|
|
|
33
37
|
}
|
|
34
38
|
async prepareFastify() {
|
|
35
39
|
this.fastify = await (0, _fastify.default)({
|
|
36
|
-
logger:
|
|
40
|
+
logger: _nodeProcess.default.env.NODE_ENV === 'development' ? {
|
|
37
41
|
transport: {
|
|
38
42
|
target: 'pino-pretty'
|
|
39
43
|
}
|
package/lib/_cjs/services/log.js
CHANGED
|
@@ -17,6 +17,53 @@ class LogService {
|
|
|
17
17
|
flags: 'a'
|
|
18
18
|
});
|
|
19
19
|
}, logFile => logFile);
|
|
20
|
+
this.info = (title, desc) => {
|
|
21
|
+
this.log({
|
|
22
|
+
level: 'info',
|
|
23
|
+
title,
|
|
24
|
+
desc
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
this.success = (title, desc) => {
|
|
28
|
+
this.log({
|
|
29
|
+
level: 'success',
|
|
30
|
+
title,
|
|
31
|
+
desc
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
this.error = (title, desc) => {
|
|
35
|
+
this.log({
|
|
36
|
+
level: 'error',
|
|
37
|
+
title,
|
|
38
|
+
desc
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
this.console = {
|
|
42
|
+
info: (title, desc) => {
|
|
43
|
+
this.log({
|
|
44
|
+
writer: 'console',
|
|
45
|
+
level: 'info',
|
|
46
|
+
title,
|
|
47
|
+
desc
|
|
48
|
+
});
|
|
49
|
+
},
|
|
50
|
+
success: (title, desc) => {
|
|
51
|
+
this.log({
|
|
52
|
+
writer: 'console',
|
|
53
|
+
level: 'success',
|
|
54
|
+
title,
|
|
55
|
+
desc
|
|
56
|
+
});
|
|
57
|
+
},
|
|
58
|
+
error: (title, desc) => {
|
|
59
|
+
this.log({
|
|
60
|
+
writer: 'console',
|
|
61
|
+
level: 'error',
|
|
62
|
+
title,
|
|
63
|
+
desc
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
};
|
|
20
67
|
}
|
|
21
68
|
getLogFile(date) {
|
|
22
69
|
const year = date.getFullYear();
|
|
@@ -44,28 +91,12 @@ class LogService {
|
|
|
44
91
|
};
|
|
45
92
|
}
|
|
46
93
|
log(payload) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
desc
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
success(title, desc) {
|
|
57
|
-
this.log({
|
|
58
|
-
level: 'success',
|
|
59
|
-
title,
|
|
60
|
-
desc
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
error(title, desc) {
|
|
64
|
-
this.log({
|
|
65
|
-
level: 'error',
|
|
66
|
-
title,
|
|
67
|
-
desc
|
|
68
|
-
});
|
|
94
|
+
const getContent = () => `${[(0, _date.formatDate)(new Date(), 'yyyy-mm-dd hh:ii:ss'), payload.level, payload.title, ...(!payload.desc ? [] : Array.isArray(payload.desc) ? payload.desc : Object.keys(payload.desc).map(key => `${key}:${payload.desc[key]}`))].map(item => String(item).replace(/[\r\n\t]+/g, ' ')).join('\t')}`;
|
|
95
|
+
if (payload.writer === 'console') {
|
|
96
|
+
console[payload.level === 'error' ? 'error' : 'log'](getContent());
|
|
97
|
+
} else {
|
|
98
|
+
this.getLogWriter(this.logFile).write(`${getContent()}\n`);
|
|
99
|
+
}
|
|
69
100
|
}
|
|
70
101
|
}
|
|
71
102
|
exports.LogService = LogService;
|
package/lib/core/server.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import process from 'node:process';
|
|
1
2
|
import Fastify from 'fastify';
|
|
2
3
|
import { base64UrlDecode, castArray, keyBy, noop, rot13 } from 'vtils';
|
|
3
4
|
import { x } from "../x";
|
|
@@ -9,6 +10,9 @@ export class Server {
|
|
|
9
10
|
this.fastify = void 0;
|
|
10
11
|
this.routes = [];
|
|
11
12
|
Server.options = options;
|
|
13
|
+
process.on('unhandledRejection', (reason, promise) => {
|
|
14
|
+
console.error('未捕获的错误', reason, promise);
|
|
15
|
+
});
|
|
12
16
|
}
|
|
13
17
|
async start() {
|
|
14
18
|
this.applyServices();
|
package/lib/services/log.d.ts
CHANGED
|
@@ -2,7 +2,9 @@ import { Merge } from 'vtils/types';
|
|
|
2
2
|
import { BaseService } from './base';
|
|
3
3
|
export type LogServiceLevel = 'error' | 'info' | 'success';
|
|
4
4
|
export type LogServiceDesc = Record<string, any> | any[];
|
|
5
|
+
export type LogServiceWriter = 'file' | 'console';
|
|
5
6
|
export type LogServicePayload = {
|
|
7
|
+
writer?: LogServiceWriter;
|
|
6
8
|
level: LogServiceLevel;
|
|
7
9
|
title: string;
|
|
8
10
|
desc?: LogServiceDesc;
|
|
@@ -18,9 +20,14 @@ export declare class LogService implements BaseService {
|
|
|
18
20
|
private getLogWriter;
|
|
19
21
|
parseLogLineText<K extends string = string>(text: string, keysMap?: Record<string, string[]>): LogServiceLogItem<K>;
|
|
20
22
|
private log;
|
|
21
|
-
info(title: string, desc?: LogServiceDesc)
|
|
22
|
-
success(title: string, desc?: LogServiceDesc)
|
|
23
|
-
error(title: string, desc?: LogServiceDesc)
|
|
23
|
+
info: (title: string, desc?: LogServiceDesc) => void;
|
|
24
|
+
success: (title: string, desc?: LogServiceDesc) => void;
|
|
25
|
+
error: (title: string, desc?: LogServiceDesc) => void;
|
|
26
|
+
console: {
|
|
27
|
+
info: (title: string, desc?: LogServiceDesc) => void;
|
|
28
|
+
success: (title: string, desc?: LogServiceDesc) => void;
|
|
29
|
+
error: (title: string, desc?: LogServiceDesc) => void;
|
|
30
|
+
};
|
|
24
31
|
}
|
|
25
32
|
declare module '../x' {
|
|
26
33
|
interface X {
|
package/lib/services/log.js
CHANGED
|
@@ -12,6 +12,53 @@ export class LogService {
|
|
|
12
12
|
flags: 'a'
|
|
13
13
|
});
|
|
14
14
|
}, logFile => logFile);
|
|
15
|
+
this.info = (title, desc) => {
|
|
16
|
+
this.log({
|
|
17
|
+
level: 'info',
|
|
18
|
+
title,
|
|
19
|
+
desc
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
this.success = (title, desc) => {
|
|
23
|
+
this.log({
|
|
24
|
+
level: 'success',
|
|
25
|
+
title,
|
|
26
|
+
desc
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
this.error = (title, desc) => {
|
|
30
|
+
this.log({
|
|
31
|
+
level: 'error',
|
|
32
|
+
title,
|
|
33
|
+
desc
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
this.console = {
|
|
37
|
+
info: (title, desc) => {
|
|
38
|
+
this.log({
|
|
39
|
+
writer: 'console',
|
|
40
|
+
level: 'info',
|
|
41
|
+
title,
|
|
42
|
+
desc
|
|
43
|
+
});
|
|
44
|
+
},
|
|
45
|
+
success: (title, desc) => {
|
|
46
|
+
this.log({
|
|
47
|
+
writer: 'console',
|
|
48
|
+
level: 'success',
|
|
49
|
+
title,
|
|
50
|
+
desc
|
|
51
|
+
});
|
|
52
|
+
},
|
|
53
|
+
error: (title, desc) => {
|
|
54
|
+
this.log({
|
|
55
|
+
writer: 'console',
|
|
56
|
+
level: 'error',
|
|
57
|
+
title,
|
|
58
|
+
desc
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
};
|
|
15
62
|
}
|
|
16
63
|
getLogFile(date) {
|
|
17
64
|
const year = date.getFullYear();
|
|
@@ -39,27 +86,11 @@ export class LogService {
|
|
|
39
86
|
};
|
|
40
87
|
}
|
|
41
88
|
log(payload) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
desc
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
success(title, desc) {
|
|
52
|
-
this.log({
|
|
53
|
-
level: 'success',
|
|
54
|
-
title,
|
|
55
|
-
desc
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
error(title, desc) {
|
|
59
|
-
this.log({
|
|
60
|
-
level: 'error',
|
|
61
|
-
title,
|
|
62
|
-
desc
|
|
63
|
-
});
|
|
89
|
+
const getContent = () => `${[formatDate(new Date(), 'yyyy-mm-dd hh:ii:ss'), payload.level, payload.title, ...(!payload.desc ? [] : Array.isArray(payload.desc) ? payload.desc : Object.keys(payload.desc).map(key => `${key}:${payload.desc[key]}`))].map(item => String(item).replace(/[\r\n\t]+/g, ' ')).join('\t')}`;
|
|
90
|
+
if (payload.writer === 'console') {
|
|
91
|
+
console[payload.level === 'error' ? 'error' : 'log'](getContent());
|
|
92
|
+
} else {
|
|
93
|
+
this.getLogWriter(this.logFile).write(`${getContent()}\n`);
|
|
94
|
+
}
|
|
64
95
|
}
|
|
65
96
|
}
|