@nocobase/logger 1.0.0-alpha.13 → 1.0.0-alpha.15
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/config.js +1 -1
- package/lib/format.js +4 -3
- package/lib/logger.d.ts +13 -3
- package/lib/logger.js +13 -4
- package/lib/request-logger.d.ts +2 -2
- package/lib/request-logger.js +1 -8
- package/lib/system-logger.d.ts +3 -3
- package/lib/system-logger.js +14 -1
- package/package.json +2 -2
package/lib/config.js
CHANGED
|
@@ -48,7 +48,7 @@ const getLoggerLevel = /* @__PURE__ */ __name(() => process.env.LOGGER_LEVEL ||
|
|
|
48
48
|
const getLoggerFilePath = /* @__PURE__ */ __name((...paths) => {
|
|
49
49
|
return import_path.default.resolve(process.env.LOGGER_BASE_PATH || import_path.default.resolve(process.cwd(), "storage", "logs"), ...paths);
|
|
50
50
|
}, "getLoggerFilePath");
|
|
51
|
-
const getLoggerTransport = /* @__PURE__ */ __name(() => (process.env.LOGGER_TRANSPORT ||
|
|
51
|
+
const getLoggerTransport = /* @__PURE__ */ __name(() => (process.env.LOGGER_TRANSPORT || "console,dailyRotateFile").split(","), "getLoggerTransport");
|
|
52
52
|
const getLoggerFormat = /* @__PURE__ */ __name(() => process.env.LOGGER_FORMAT || (process.env.APP_ENV === "development" ? "console" : "json"), "getLoggerFormat");
|
|
53
53
|
// Annotate the CommonJS export names for ESM import in node:
|
|
54
54
|
0 && (module.exports = {
|
package/lib/format.js
CHANGED
|
@@ -133,15 +133,16 @@ const consoleFormat = import_winston.default.format.printf((info) => {
|
|
|
133
133
|
}
|
|
134
134
|
});
|
|
135
135
|
const tags = Object.entries(info).filter(([k, v]) => !keys.includes(k) && v).map(([k, v]) => `${k}=${v}`).join(" ");
|
|
136
|
-
const level = info.level
|
|
136
|
+
const level = `[${info.level}]`.padEnd(7, " ");
|
|
137
137
|
const message = info.message.padEnd(44, " ");
|
|
138
138
|
const color = {
|
|
139
139
|
error: import_chalk.default.red,
|
|
140
140
|
warn: import_chalk.default.yellow,
|
|
141
141
|
info: import_chalk.default.green,
|
|
142
|
-
debug: import_chalk.default.blue
|
|
142
|
+
debug: import_chalk.default.blue,
|
|
143
|
+
trace: import_chalk.default.cyan
|
|
143
144
|
}[info.level] || import_chalk.default.white;
|
|
144
|
-
const colorized = message.startsWith("Executing") ? color(`${info.timestamp}
|
|
145
|
+
const colorized = message.startsWith("Executing") ? color(`${info.timestamp} ${level}`) + ` ${message}` : color(`${info.timestamp} ${level} ${message}`);
|
|
145
146
|
return `${colorized} ${tags}`;
|
|
146
147
|
});
|
|
147
148
|
const delimiterFormat = import_winston.default.format.printf(
|
package/lib/logger.d.ts
CHANGED
|
@@ -6,17 +6,27 @@
|
|
|
6
6
|
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
|
-
import winston, { Logger } from 'winston';
|
|
9
|
+
import winston, { LeveledLogMethod, Logger as WinstonLogger } from 'winston';
|
|
10
10
|
import 'winston-daily-rotate-file';
|
|
11
|
+
interface Logger extends WinstonLogger {
|
|
12
|
+
trace: LeveledLogMethod;
|
|
13
|
+
}
|
|
11
14
|
interface LoggerOptions extends Omit<winston.LoggerOptions, 'transports' | 'format'> {
|
|
12
15
|
dirname?: string;
|
|
13
16
|
filename?: string;
|
|
14
17
|
format?: 'logfmt' | 'json' | 'delimiter' | 'console' | winston.Logform.Format;
|
|
15
18
|
transports?: ('console' | 'file' | 'dailyRotateFile' | winston.transport)[];
|
|
16
19
|
}
|
|
17
|
-
export declare const
|
|
20
|
+
export declare const levels: {
|
|
21
|
+
trace: number;
|
|
22
|
+
debug: number;
|
|
23
|
+
info: number;
|
|
24
|
+
warn: number;
|
|
25
|
+
error: number;
|
|
26
|
+
};
|
|
27
|
+
export declare const createLogger: (options: LoggerOptions) => Logger;
|
|
18
28
|
/**
|
|
19
29
|
* @internal
|
|
20
30
|
*/
|
|
21
|
-
export declare const createConsoleLogger: (options?: winston.LoggerOptions) =>
|
|
31
|
+
export declare const createConsoleLogger: (options?: winston.LoggerOptions) => Logger;
|
|
22
32
|
export { Logger, LoggerOptions };
|
package/lib/logger.js
CHANGED
|
@@ -37,9 +37,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
37
37
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
38
38
|
var logger_exports = {};
|
|
39
39
|
__export(logger_exports, {
|
|
40
|
-
Logger: () => import_winston.Logger,
|
|
41
40
|
createConsoleLogger: () => createConsoleLogger,
|
|
42
|
-
createLogger: () => createLogger
|
|
41
|
+
createLogger: () => createLogger,
|
|
42
|
+
levels: () => levels
|
|
43
43
|
});
|
|
44
44
|
module.exports = __toCommonJS(logger_exports);
|
|
45
45
|
var import_winston = __toESM(require("winston"));
|
|
@@ -47,12 +47,20 @@ var import_winston_daily_rotate_file = require("winston-daily-rotate-file");
|
|
|
47
47
|
var import_config = require("./config");
|
|
48
48
|
var import_transports = require("./transports");
|
|
49
49
|
var import_format = require("./format");
|
|
50
|
+
const levels = {
|
|
51
|
+
trace: 4,
|
|
52
|
+
debug: 3,
|
|
53
|
+
info: 2,
|
|
54
|
+
warn: 1,
|
|
55
|
+
error: 0
|
|
56
|
+
};
|
|
50
57
|
const createLogger = /* @__PURE__ */ __name((options) => {
|
|
51
58
|
if (process.env.GITHUB_ACTIONS) {
|
|
52
59
|
return createConsoleLogger();
|
|
53
60
|
}
|
|
54
61
|
const { format, ...rest } = options;
|
|
55
62
|
const winstonOptions = {
|
|
63
|
+
levels,
|
|
56
64
|
level: (0, import_config.getLoggerLevel)(),
|
|
57
65
|
...rest,
|
|
58
66
|
transports: (0, import_transports.getTransports)(options)
|
|
@@ -62,6 +70,7 @@ const createLogger = /* @__PURE__ */ __name((options) => {
|
|
|
62
70
|
const createConsoleLogger = /* @__PURE__ */ __name((options) => {
|
|
63
71
|
const { format, ...rest } = options || {};
|
|
64
72
|
return import_winston.default.createLogger({
|
|
73
|
+
levels,
|
|
65
74
|
level: (0, import_config.getLoggerLevel)(),
|
|
66
75
|
format: import_winston.default.format.combine(
|
|
67
76
|
import_winston.default.format.timestamp({
|
|
@@ -75,7 +84,7 @@ const createConsoleLogger = /* @__PURE__ */ __name((options) => {
|
|
|
75
84
|
}, "createConsoleLogger");
|
|
76
85
|
// Annotate the CommonJS export names for ESM import in node:
|
|
77
86
|
0 && (module.exports = {
|
|
78
|
-
Logger,
|
|
79
87
|
createConsoleLogger,
|
|
80
|
-
createLogger
|
|
88
|
+
createLogger,
|
|
89
|
+
levels
|
|
81
90
|
});
|
package/lib/request-logger.d.ts
CHANGED
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
|
-
import { LoggerOptions } from './logger';
|
|
9
|
+
import { Logger, LoggerOptions } from './logger';
|
|
10
10
|
export interface RequestLoggerOptions extends LoggerOptions {
|
|
11
11
|
skip?: (ctx?: any) => Promise<boolean>;
|
|
12
12
|
requestWhitelist?: string[];
|
|
13
13
|
responseWhitelist?: string[];
|
|
14
14
|
}
|
|
15
|
-
export declare const requestLogger: (appName: string, options?: RequestLoggerOptions) => (ctx: any, next: any) => Promise<void>;
|
|
15
|
+
export declare const requestLogger: (appName: string, requestLogger: Logger, options?: RequestLoggerOptions) => (ctx: any, next: any) => Promise<void>;
|
package/lib/request-logger.js
CHANGED
|
@@ -30,8 +30,6 @@ __export(request_logger_exports, {
|
|
|
30
30
|
requestLogger: () => requestLogger
|
|
31
31
|
});
|
|
32
32
|
module.exports = __toCommonJS(request_logger_exports);
|
|
33
|
-
var import_config = require("./config");
|
|
34
|
-
var import_logger = require("./logger");
|
|
35
33
|
var import_lodash = require("lodash");
|
|
36
34
|
const defaultRequestWhitelist = [
|
|
37
35
|
"action",
|
|
@@ -44,12 +42,7 @@ const defaultRequestWhitelist = [
|
|
|
44
42
|
"referer"
|
|
45
43
|
];
|
|
46
44
|
const defaultResponseWhitelist = ["status"];
|
|
47
|
-
const requestLogger = /* @__PURE__ */ __name((appName, options) => {
|
|
48
|
-
const requestLogger2 = (0, import_logger.createLogger)({
|
|
49
|
-
dirname: (0, import_config.getLoggerFilePath)(appName),
|
|
50
|
-
filename: "request",
|
|
51
|
-
...options || {}
|
|
52
|
-
});
|
|
45
|
+
const requestLogger = /* @__PURE__ */ __name((appName, requestLogger2, options) => {
|
|
53
46
|
return async (ctx, next) => {
|
|
54
47
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
55
48
|
const reqId = ctx.reqId;
|
package/lib/system-logger.d.ts
CHANGED
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
|
-
import { Logger } from '
|
|
10
|
-
import { LoggerOptions } from './logger';
|
|
9
|
+
import { Logger, LoggerOptions } from './logger';
|
|
11
10
|
export interface SystemLoggerOptions extends LoggerOptions {
|
|
12
11
|
seperateError?: boolean;
|
|
13
12
|
}
|
|
@@ -17,10 +16,11 @@ export type logMethod = (message: string, meta?: {
|
|
|
17
16
|
method?: string;
|
|
18
17
|
[key: string]: any;
|
|
19
18
|
}) => SystemLogger;
|
|
20
|
-
export interface SystemLogger extends Omit<Logger, 'info' | 'warn' | 'error' | 'debug'> {
|
|
19
|
+
export interface SystemLogger extends Omit<Logger, 'info' | 'warn' | 'error' | 'debug' | 'trace'> {
|
|
21
20
|
info: logMethod;
|
|
22
21
|
warn: logMethod;
|
|
23
22
|
error: logMethod;
|
|
24
23
|
debug: logMethod;
|
|
24
|
+
trace: logMethod;
|
|
25
25
|
}
|
|
26
26
|
export declare const createSystemLogger: (options: SystemLoggerOptions) => SystemLogger;
|
package/lib/system-logger.js
CHANGED
|
@@ -95,6 +95,12 @@ const _SystemLoggerTransport = class _SystemLoggerTransport extends import_winst
|
|
|
95
95
|
}
|
|
96
96
|
callback(null, true);
|
|
97
97
|
}
|
|
98
|
+
close() {
|
|
99
|
+
this.logger.close();
|
|
100
|
+
if (this.errorLogger) {
|
|
101
|
+
this.errorLogger.close();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
98
104
|
};
|
|
99
105
|
__name(_SystemLoggerTransport, "SystemLoggerTransport");
|
|
100
106
|
let SystemLoggerTransport = _SystemLoggerTransport;
|
|
@@ -116,8 +122,15 @@ function child(defaultRequestMetadata) {
|
|
|
116
122
|
}
|
|
117
123
|
__name(child, "child");
|
|
118
124
|
const createSystemLogger = /* @__PURE__ */ __name((options) => {
|
|
125
|
+
const transport = new SystemLoggerTransport(options);
|
|
126
|
+
transport.once("unpipe", () => {
|
|
127
|
+
transport.close();
|
|
128
|
+
});
|
|
119
129
|
const logger = import_winston.default.createLogger({
|
|
120
|
-
|
|
130
|
+
levels: import_logger.levels,
|
|
131
|
+
transports: [transport]
|
|
132
|
+
// Due to the use of custom log levels,
|
|
133
|
+
// we have to use the any type until Winston updates the type definitions.
|
|
121
134
|
});
|
|
122
135
|
return new Proxy(logger, {
|
|
123
136
|
get(target, prop) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocobase/logger",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.15",
|
|
4
4
|
"description": "nocobase logging library",
|
|
5
5
|
"license": "AGPL-3.0",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -18,5 +18,5 @@
|
|
|
18
18
|
"winston-daily-rotate-file": "^5.0.0",
|
|
19
19
|
"winston-transport": "^4.7.0"
|
|
20
20
|
},
|
|
21
|
-
"gitHead": "
|
|
21
|
+
"gitHead": "2793d371368e094ea2bba04cfbe9b9b73c44edba"
|
|
22
22
|
}
|