tslog完全指南:TypeScript与JavaScript的终极通用日志解决方案 【免费下载链接】tslog📝 tslog - Universal Logger for TypeScript and JavaScript项目地址: https://gitcode.com/gh_mirrors/ts/tslog tslog是一款为TypeScript和JavaScript打造的强大、快速且富有表现力的日志工具,它提供了美观的日志体验,适用于浏览器、Node.js、Deno和Bun等多种环境,是开发者记录和管理应用程序日志的理想选择。
为什么选择tslog?
tslog作为一款优秀的日志工具,具有诸多令人称赞的特性。
它不仅运行速度快、功能强大,而且轻量级且灵活,能够在各种运行环境中稳定工作。
同时,tslog完全支持TypeScript,拥有原生的源映射,可提供精准的类型提示和错误定位。
无论是追求美观的格式化输出,还是需要结构化的JSON日志,tslog都能满足需求,并且支持自定义日志级别,让日志管理更加灵活高效。
tslog多环境日志输出示例 快速开始:安装与基础使用 安装tslog 要在项目中使用tslog,只需通过npm进行安装:
npm install tslog
基础使用示例 安装完成后,在代码中引入并创建日志实例,即可开始记录日志:
import { Logger } from "tslog";
const logger = new Logger({ name: "myLogger" });
logger.silly("I am a silly log.");
logger.trace("I am a trace log.");
logger.debug("I am a debug log.");
logger.info("I am an info log.");
logger.warn("I am a warn log with a json object:", { foo: "bar" });
logger.error("I am an error log.");
logger.fatal(new Error("I am a pretty Error with a stacktrace."));
多环境支持:无处不在的日志记录 tslog具有出色的跨环境能力,能够在各种主流的JavaScript运行环境中无缝工作。
Node.js环境配置 在Node.js中使用tslog,需要在package.json中设置"type": "module"以启用原生ESM,并在运行时启用源映射以获取准确的堆栈跟踪:
{
"name": "NAME",
"version": "1.0.0",
"type": "module",
"scripts": {
"build": "tsc -p .",
"start": "node --enable-source-maps dist/index.js"
},
"dependencies": {
"tslog": "^4"
}
}
Deno环境使用 在Deno中,通过npm导入tslog即可直接使用:
import { Logger } from "npm:tslog";
const logger = new Logger();
logger.info("Hello from Deno");
Bun环境使用 在Bun环境中,同样可以轻松引入tslog:
import { Logger } from "tslog";
const logger = new Logger();
logger.info("Hello from Bun");
浏览器环境使用 在浏览器中,通过script标签引入tslog.js后即可使用:
tslog example
Example
日志消息的生命周期:从产生到输出 了解日志消息的生命周期有助于更好地理解tslog的工作原理和自定义日志处理流程。
每条日志消息在被显示或传递给"传输器"之前,都会经过一系列步骤。
tslog日志消息生命周期 日志生命周期各阶段 log message :日志消息通过
BaseLogger.log()
方法进入处理流程。
mask :如果配置了掩码功能,日志消息会被递归掩码处理,以保护敏感信息。
toLogObj :日志消息被转换为日志对象,默认的类型化日志对象会被克隆并丰富传入的日志参数。
addMetaToLogObj :收集额外的元信息,如日期、运行时和日志的源代码位置等,并添加到日志对象的
_meta
属性中。
format :在"pretty"配置情况下,日志对象会根据设置的模板进行格式化。
transport :最后一步是将日志消息传输到每个附加的传输器,根据配置输出JSON格式、格式化格式或隐藏输出。
高级功能:定制化你的日志系统 tslog提供了丰富的高级功能,允许开发者根据项目需求定制日志系统。
子日志器:模块化日志管理 每个tslog日志器实例都可以创建子日志器,并将其设置继承给子日志器。
这在构建模块化应用时非常有用,通过
getSubLogger()
方法创建子日志器:
const mainLogger = new Logger({ type: "pretty", name: "MainLogger" });
mainLogger.silly("foo bar");
const firstSubLogger = mainLogger.getSubLogger({ name: "FirstSubLogger" });
firstSubLogger.silly("foo bar 1");
自定义日志级别 除了默认的日志级别,开发者还可以通过扩展
BaseLogger
并利用
log
方法定义自定义日志级别:
import { BaseLogger, ILogObjMeta, ISettingsParam, ILogObj } from "tslog";
export class CustomLogger extends BaseLogger {
constructor(settings?: ISettingsParam, logObj?: LogObj) {
super(settings, logObj, 5);
}
public custom(...args: unknown[]): LogObj & ILogObjMeta | undefined {
return super.log(8, "CUSTOM", ...args);
}
}
日志掩码:保护敏感信息 为了防止密码和机密信息通过日志文件泄露,tslog提供了掩码功能。
可以通过配置指定要替换值的键、是否区分大小写以及使用正则表达式替换字符串和对象值等:
const logger = new Logger({
maskPlaceholder: "[***]",
maskValuesOfKeys: ["password", "token"],
maskValuesOfKeysCaseInsensitive: true,
maskValuesRegEx: /\b\d{16}\b/g // 匹配16位数字
});
附加传输器:灵活处理日志输出 tslog专注于日志捕获,默认将所有日志输出到控制台,但开发者可以轻松附加多个传输器,将日志发送到文件系统、外部日志聚合服务等。
例如,将日志存储到文件:
import { Logger } from "tslog";
import { appendFileSync } from "fs";
const logger = new Logger();
logger.attachTransport((logObj) => {
appendFileSync("logs.txt", JSON.stringify(logObj) + "\n");
});
性能优化:在生产环境中高效运行 默认情况下,tslog为了提供最佳的开发体验,包含了一些可能会影响生产环境性能的默认设置。
为了确保在生产环境中获得最佳性能,可以修改相关设置,例如设置
hideLogPositionForProduction
为
true
来禁用日志代码位置收集功能。
总结 tslog作为TypeScript与JavaScript的终极通用日志解决方案,凭借其强大的功能、灵活的配置和优秀的跨环境支持,为开发者提供了便捷、高效的日志管理工具。
无论是小型项目还是大型应用,tslog都能满足各种日志需求,帮助开发者更好地监控和调试应用程序。
通过本文的介绍,相信你已经对tslog有了全面的了解,现在就开始在你的项目中使用tslog,体验它带来的出色日志记录体验吧!
【免费下载链接】tslog📝 tslog - Universal Logger for TypeScript and JavaScript项目地址: https://gitcode.com/gh_mirrors/ts/tslog
