@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 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 || (process.env.APP_ENV === "development" ? "console" : "console,dailyRotateFile")).split(","), "getLoggerTransport");
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.padEnd(5, " ");
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} [${level}]`) + ` ${message}` : color(`${info.timestamp} [${level}] ${message}`);
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 createLogger: (options: LoggerOptions) => winston.Logger;
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) => winston.Logger;
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
  });
@@ -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>;
@@ -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;
@@ -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 'winston';
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;
@@ -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
- transports: [new SystemLoggerTransport(options)]
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.13",
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": "bd97adef70762a6691b5b58ca6572672a8cdf838"
21
+ "gitHead": "2793d371368e094ea2bba04cfbe9b9b73c44edba"
22
22
  }