@basenative /记录器
具有与pino兼容的输出、传输和子记录器的结构化JSON日志记录
部分 BaseNative 生态系统——基于信号的web运行时,基于原生HTML。
安装
npm install @basenative/logger
快速入门
import { createLogger } from '@basenative/logger';
const log = createLogger({ name: 'api', level: 'info' });
log.info('Server started', { port: 3000 });
log.warn('Slow query', { duration: 1200, table: 'users' });
log.error('Unhandled error', { err });
孩子伐木工
const requestLog = log.child({ requestId: 'abc-123' });
requestLog.info('Incoming request'); // always includes requestId
请求中间件
import { createLogger, requestLogger } from '@basenative/logger';
import { createPipeline } from '@basenative/middleware';
const log = createLogger({ name: 'http' });
const pipeline = createPipeline().use(requestLogger(log));
// ctx.state.logger is now a child logger with requestId, method, url
API
createLogger(options?)
创建日志程序实例。选项:
level—最小日志级别:'trace','debug','info','warn','error','fatal'。默认值:'info'.name-日志记录器名称,包含在每个日志条目中。transport-传输实例(默认:consoleTransport())。context—在每个日志条目中合并静态键值对。timestamp——包括time字段(自epoch以来的毫秒数)。默认值:true.pretty-漂亮的彩色打印在发展。默认值:NODE_ENV !== 'production'.
记录器的方法: trace, debug, info, warn, error, fatal -每个人都接受 (msg, data?).
.child(context)-返回一个新的日志记录器,继承带有附加静态上下文的所有设置。.level-只读当前级别字符串。
传输
consoleTransport()-写入到console.log。在开发中使用漂亮的打印,在生产中使用JSON。streamTransport(stream)-将JSON行写入任何Node.js可写流(例如文件流)。multiTransport(transports[])-扇形输出到多个传输同时。
中间件
requestLogger(logger, options?)为每个请求创建子记录器的中间件requestId,method,url。把它附加到ctx.state.logger. 选项:idHeader(默认值:'x-request-id')。
许可证
apache - 2.0