@ubean/shared 0.3.4 → 0.3.6
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/dist/logger/hono.js +1 -1
- package/dist/logger/index.d.ts +19 -4
- package/dist/logger/index.js +2 -2
- package/dist/logger-C9j4b6yh.js +134 -0
- package/package.json +1 -1
- package/dist/logger-CG0K8cWb.js +0 -61
package/dist/logger/hono.js
CHANGED
package/dist/logger/index.d.ts
CHANGED
|
@@ -3,9 +3,11 @@ import { i as UbeanLoggerOptions, n as RequestLoggerOptions, r as UbeanLogger, t
|
|
|
3
3
|
/**
|
|
4
4
|
* 创建一个 ubean 命名的 tslog logger(默认 name 为 `ubean`)。
|
|
5
5
|
*
|
|
6
|
-
* - 未显式提供 `minLevel` 时读取 `LOG_LEVEL`/`TSLOG_LEVEL`
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* - 未显式提供 `minLevel` 时读取 `LOG_LEVEL`/`TSLOG_LEVEL` 环境变量,
|
|
7
|
+
* 都没有则默认 `info`(debug/silly 需显式打开)
|
|
8
|
+
* - pretty 输出默认仅消息(精简模板);debug 模式或显式 `pretty.template` 时按需覆盖,
|
|
9
|
+
* 交互式终端彩色、管道/CI 自动去色
|
|
10
|
+
* - 需要结构化 JSON 时显式 `{ type: 'json' }` 或设 `TSLOG_TYPE=json`
|
|
9
11
|
*
|
|
10
12
|
* @example
|
|
11
13
|
* ```ts
|
|
@@ -30,5 +32,18 @@ declare const logger: UbeanLogger;
|
|
|
30
32
|
* ```
|
|
31
33
|
*/
|
|
32
34
|
declare function getLogger(scope?: string, options?: UbeanLoggerOptions): UbeanLogger;
|
|
35
|
+
/**
|
|
36
|
+
* 切换 debug 日志模式,对所有已创建的 logger 实例(含子 logger)即时生效:
|
|
37
|
+
* - `true`:输出详细日志(日期 + 等级 + 调用位置 + logger 名)
|
|
38
|
+
* - `false`:恢复精简输出(仅消息)
|
|
39
|
+
*
|
|
40
|
+
* 供 CLI 在解析 `--debug` 后调用。
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* setDebugLogging(process.argv.includes('--debug'));
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
declare function setDebugLogging(enabled: boolean): void;
|
|
33
48
|
//#endregion
|
|
34
|
-
export { type LogLevelName, type RequestLoggerOptions, type UbeanLogger, type UbeanLoggerOptions, createUbeanLogger, getLogger, logger };
|
|
49
|
+
export { type LogLevelName, type RequestLoggerOptions, type UbeanLogger, type UbeanLoggerOptions, createUbeanLogger, getLogger, logger, setDebugLogging };
|
package/dist/logger/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as getLogger, r as logger, t as createUbeanLogger } from "../logger-
|
|
2
|
-
export { createUbeanLogger, getLogger, logger };
|
|
1
|
+
import { i as setDebugLogging, n as getLogger, r as logger, t as createUbeanLogger } from "../logger-C9j4b6yh.js";
|
|
2
|
+
export { createUbeanLogger, getLogger, logger, setDebugLogging };
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { Logger } from "tslog";
|
|
2
|
+
//#region src/logger/logger.ts
|
|
3
|
+
const DEFAULT_NAME = "ubean";
|
|
4
|
+
/**
|
|
5
|
+
* 默认精简模板:空模板 → 仅输出消息(无日期 / 等级 / 路径),适合 CLI 日常使用。
|
|
6
|
+
* 需要完整上下文(日期 + 调用位置 + logger 名)时,用 `setDebugLogging(true)` 切换。
|
|
7
|
+
*/
|
|
8
|
+
const DEFAULT_PRETTY_TEMPLATE = "";
|
|
9
|
+
/**
|
|
10
|
+
* debug 模式的详细模板:日期 + 等级 + 调用位置 + logger 名 + 消息。
|
|
11
|
+
* 仅在显式开启 debug 日志时使用(见 {@link setDebugLogging})。
|
|
12
|
+
*/
|
|
13
|
+
const DEBUG_PRETTY_TEMPLATE = "{{yyyy}}.{{mm}}.{{dd}} {{hh}}:{{MM}}:{{ss}} {{logLevelName}} {{filePathWithLine}} {{nameWithDelimiterPrefix}} ";
|
|
14
|
+
/** 未显式配置时的默认等级:info(debug/silly 需通过 LOG_LEVEL 打开) */
|
|
15
|
+
const DEFAULT_MIN_LEVEL = "INFO";
|
|
16
|
+
/** 是否处于 debug 模式(输出详细模板) */
|
|
17
|
+
let debugMode = false;
|
|
18
|
+
/** 已创建的 logger 实例注册表,`setDebugLogging` 切换模板时统一更新(含子 logger) */
|
|
19
|
+
const instances = /* @__PURE__ */ new Set();
|
|
20
|
+
function registerInstance(instance) {
|
|
21
|
+
instances.add(instance);
|
|
22
|
+
return instance;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 运行时切换单个实例的栈捕获。
|
|
26
|
+
*
|
|
27
|
+
* tslog 在构造时一次性计算 `captureStackForMeta`(`_shouldCaptureStack()`),之后仅在每次
|
|
28
|
+
* 日志调用时读取该标志决定是否解析调用位置。因此运行期切换模板时,需要同步刷新这个内部
|
|
29
|
+
* 标志(否则 debug 模板中的 `{{filePathWithLine}}` 渲染为空)。该属性为 tslog 私有字段,
|
|
30
|
+
* 这里通过受控的类型断言访问——本模块是 tslog 的唯一集成点,且 tslog 版本已锁定。
|
|
31
|
+
*/
|
|
32
|
+
function setStackCapture(instance, enabled) {
|
|
33
|
+
instance.settings = {
|
|
34
|
+
...instance.settings,
|
|
35
|
+
stack: {
|
|
36
|
+
...instance.settings.stack,
|
|
37
|
+
capture: enabled ? "full" : "auto"
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
instance.captureStackForMeta = enabled;
|
|
41
|
+
}
|
|
42
|
+
/** 按当前 debug 模式刷新单个实例的 pretty 模板与栈捕获 */
|
|
43
|
+
function applyDebugMode(instance) {
|
|
44
|
+
instance.settings = {
|
|
45
|
+
...instance.settings,
|
|
46
|
+
pretty: {
|
|
47
|
+
...instance.settings.pretty,
|
|
48
|
+
template: debugMode ? DEBUG_PRETTY_TEMPLATE : DEFAULT_PRETTY_TEMPLATE
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
setStackCapture(instance, debugMode);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 从环境变量解析日志等级:
|
|
55
|
+
* 1. `LOG_LEVEL`(ubean 约定,友好别名)
|
|
56
|
+
* 2. `TSLOG_LEVEL`(tslog 原生)
|
|
57
|
+
*
|
|
58
|
+
* 返回 undefined 时沿用 tslog 默认 minLevel。
|
|
59
|
+
*/
|
|
60
|
+
function getLogLevelFromEnv() {
|
|
61
|
+
if (typeof process === "undefined" || !process.env) return void 0;
|
|
62
|
+
const value = process.env.LOG_LEVEL ?? process.env.TSLOG_LEVEL;
|
|
63
|
+
if (!value) return void 0;
|
|
64
|
+
return value;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 创建一个 ubean 命名的 tslog logger(默认 name 为 `ubean`)。
|
|
68
|
+
*
|
|
69
|
+
* - 未显式提供 `minLevel` 时读取 `LOG_LEVEL`/`TSLOG_LEVEL` 环境变量,
|
|
70
|
+
* 都没有则默认 `info`(debug/silly 需显式打开)
|
|
71
|
+
* - pretty 输出默认仅消息(精简模板);debug 模式或显式 `pretty.template` 时按需覆盖,
|
|
72
|
+
* 交互式终端彩色、管道/CI 自动去色
|
|
73
|
+
* - 需要结构化 JSON 时显式 `{ type: 'json' }` 或设 `TSLOG_TYPE=json`
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```ts
|
|
77
|
+
* const log = createUbeanLogger({ name: 'api' });
|
|
78
|
+
* log.info({ port: 3000 }, 'server started');
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
function createUbeanLogger(options = {}) {
|
|
82
|
+
const minLevel = options.minLevel ?? getLogLevelFromEnv() ?? DEFAULT_MIN_LEVEL;
|
|
83
|
+
return registerInstance(new Logger({
|
|
84
|
+
name: DEFAULT_NAME,
|
|
85
|
+
...options,
|
|
86
|
+
pretty: {
|
|
87
|
+
template: debugMode ? DEBUG_PRETTY_TEMPLATE : DEFAULT_PRETTY_TEMPLATE,
|
|
88
|
+
timeZone: "local",
|
|
89
|
+
...options.pretty
|
|
90
|
+
},
|
|
91
|
+
minLevel
|
|
92
|
+
}));
|
|
93
|
+
}
|
|
94
|
+
/** ubean 全局默认 logger(供应用侧 `import { logger } from 'ubean'` 使用) */
|
|
95
|
+
const logger = createUbeanLogger();
|
|
96
|
+
/**
|
|
97
|
+
* 获取命名(scope)logger。
|
|
98
|
+
*
|
|
99
|
+
* - 不传 scope 时返回全局默认 `logger`
|
|
100
|
+
* - 传 scope 时返回其子 logger(name 组合为 `ubean:<scope>`,如 `getLogger('cli')` → `ubean:cli`),
|
|
101
|
+
* 继承父 logger 的 settings/minLevel,可通过 `options` 覆盖
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```ts
|
|
105
|
+
* const cli = getLogger('cli');
|
|
106
|
+
* cli.info('building...');
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
function getLogger(scope, options = {}) {
|
|
110
|
+
if (!scope) return logger;
|
|
111
|
+
return registerInstance(logger.getSubLogger({
|
|
112
|
+
name: scope,
|
|
113
|
+
...options
|
|
114
|
+
}));
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* 切换 debug 日志模式,对所有已创建的 logger 实例(含子 logger)即时生效:
|
|
118
|
+
* - `true`:输出详细日志(日期 + 等级 + 调用位置 + logger 名)
|
|
119
|
+
* - `false`:恢复精简输出(仅消息)
|
|
120
|
+
*
|
|
121
|
+
* 供 CLI 在解析 `--debug` 后调用。
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* ```ts
|
|
125
|
+
* setDebugLogging(process.argv.includes('--debug'));
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
function setDebugLogging(enabled) {
|
|
129
|
+
if (debugMode === enabled) return;
|
|
130
|
+
debugMode = enabled;
|
|
131
|
+
for (const instance of instances) applyDebugMode(instance);
|
|
132
|
+
}
|
|
133
|
+
//#endregion
|
|
134
|
+
export { setDebugLogging as i, getLogger as n, logger as r, createUbeanLogger as t };
|
package/package.json
CHANGED
package/dist/logger-CG0K8cWb.js
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { Logger } from "tslog";
|
|
2
|
-
//#region src/logger/logger.ts
|
|
3
|
-
const DEFAULT_NAME = "ubean";
|
|
4
|
-
/**
|
|
5
|
-
* 从环境变量解析日志等级:
|
|
6
|
-
* 1. `LOG_LEVEL`(ubean 约定,友好别名)
|
|
7
|
-
* 2. `TSLOG_LEVEL`(tslog 原生)
|
|
8
|
-
*
|
|
9
|
-
* 返回 undefined 时沿用 tslog 默认 minLevel。
|
|
10
|
-
*/
|
|
11
|
-
function getLogLevelFromEnv() {
|
|
12
|
-
if (typeof process === "undefined" || !process.env) return void 0;
|
|
13
|
-
const value = process.env.LOG_LEVEL ?? process.env.TSLOG_LEVEL;
|
|
14
|
-
if (!value) return void 0;
|
|
15
|
-
return value;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* 创建一个 ubean 命名的 tslog logger(默认 name 为 `ubean`)。
|
|
19
|
-
*
|
|
20
|
-
* - 未显式提供 `minLevel` 时读取 `LOG_LEVEL`/`TSLOG_LEVEL` 环境变量
|
|
21
|
-
* - 输出格式沿用 tslog 默认:交互式终端彩色 pretty,管道/CI 自动去色;需要结构化 JSON 时显式
|
|
22
|
-
* `{ type: 'json' }` 或设 `TSLOG_TYPE=json`
|
|
23
|
-
*
|
|
24
|
-
* @example
|
|
25
|
-
* ```ts
|
|
26
|
-
* const log = createUbeanLogger({ name: 'api' });
|
|
27
|
-
* log.info({ port: 3000 }, 'server started');
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
function createUbeanLogger(options = {}) {
|
|
31
|
-
const minLevel = options.minLevel ?? getLogLevelFromEnv();
|
|
32
|
-
return new Logger({
|
|
33
|
-
name: DEFAULT_NAME,
|
|
34
|
-
...options,
|
|
35
|
-
minLevel
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
/** ubean 全局默认 logger(供应用侧 `import { logger } from 'ubean'` 使用) */
|
|
39
|
-
const logger = createUbeanLogger();
|
|
40
|
-
/**
|
|
41
|
-
* 获取命名(scope)logger。
|
|
42
|
-
*
|
|
43
|
-
* - 不传 scope 时返回全局默认 `logger`
|
|
44
|
-
* - 传 scope 时返回其子 logger(name 组合为 `ubean:<scope>`,如 `getLogger('cli')` → `ubean:cli`),
|
|
45
|
-
* 继承父 logger 的 settings/minLevel,可通过 `options` 覆盖
|
|
46
|
-
*
|
|
47
|
-
* @example
|
|
48
|
-
* ```ts
|
|
49
|
-
* const cli = getLogger('cli');
|
|
50
|
-
* cli.info('building...');
|
|
51
|
-
* ```
|
|
52
|
-
*/
|
|
53
|
-
function getLogger(scope, options = {}) {
|
|
54
|
-
if (!scope) return logger;
|
|
55
|
-
return logger.getSubLogger({
|
|
56
|
-
name: scope,
|
|
57
|
-
...options
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
//#endregion
|
|
61
|
-
export { getLogger as n, logger as r, createUbeanLogger as t };
|