胖子-日志类型
说明
日志( logger) 类型, 临 时 议 题 启发.
货包只装了几分几分几分 createLogger 帮助, 因此库可以依赖于日志合同
而不取决于具体的伐木执行情况.
所需资源
- 节点:
安装
穿过 国家预防机制 作为 @ chubbyts/ chubbyts-log-类型。 。 。 .
npm i @chubbyts/chubbyts-log-types@^3.4.1
使用量
类型
import type {
Context,
LogFn,
Logger,
LogLevel,
NamedLogFn,
} from '@chubbyts/chubbyts-log-types/log';
type LogLevel =
| 'emergency'
| 'alert'
| 'critical'
| 'error'
| 'warning'
| 'notice'
| 'info'
| 'debug';
type Context = Record<string, unknown>;
type LogFn = (level: LogLevel, message: string, context: Context) => void;
type NamedLogFn = (message: string, context: Context) => void;
// one NamedLogFn per LogLevel, plus the generic log function
type Logger = Record<LogLevel, NamedLogFn> & { log: LogFn };
创建日志
createLogger 单曲 LogFn 并从中衍生出所有具体层次的方法.
import { createLogger } from '@chubbyts/chubbyts-log-types/log';
const logger = createLogger((level, message, context) => {
const datetime = new Date().toISOString();
console.log(JSON.stringify({ datetime, level, message, context }));
});
logger.info('User logged in', { userId: 'a1b2c3' });
logger.error('Payment failed', { orderId: 42, reason: 'card declined' });
logger.log('warning', 'Disk space low', { freeBytes: 1_024 });
无效日志
没有争论 createLogger 返回一个丢弃每个消息的日志,
这是一种方便的默认或测试.
import { createLogger } from '@chubbyts/chubbyts-log-types/log';
const logger = createLogger();
logger.debug('This goes nowhere', {});
取决于类型
接受一个 Logger 而不是具体执行.
import type { Logger } from '@chubbyts/chubbyts-log-types/log';
import { createLogger } from '@chubbyts/chubbyts-log-types/log';
export const createUserService = (logger: Logger = createLogger()) => ({
delete: (id: string) => {
logger.notice('User deleted', { id });
},
});
按级别过滤
import type { LogFn, LogLevel } from '@chubbyts/chubbyts-log-types/log';
import { createLogger } from '@chubbyts/chubbyts-log-types/log';
// ordered from most to least severe
const levels: Array<LogLevel> = [
'emergency',
'alert',
'critical',
'error',
'warning',
'notice',
'info',
'debug',
];
const createMinLevelLogFn =
(minLevel: LogLevel, log: LogFn): LogFn =>
(level, message, context) => {
if (levels.indexOf(level) <= levels.indexOf(minLevel)) {
log(level, message, context);
}
};
const logger = createLogger(
createMinLevelLogFn('warning', (level, message, context) => {
console.log(level, message, context);
}),
);
logger.error('Shown', {});
logger.info('Suppressed', {});
版权
2026 道米尼克·佐格(英语: