跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

tslog完全指南:TypeScript与JavaScript的终极通用日志解决方案

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

相关文章