1.4.7 • Published 11 months ago

mw-log4ts v1.4.7

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

Log4Ts

npm.io npm.io npm.io npm.io

Log4Ts 日志管理 in pure typescript。提供统一的日志管理以及简单的过滤功能。

v1.4.7
by LviatYi

阅读该文档时,推荐安装以下字体:

若出现乱码,其为 Nerd Font 的特殊字符,不影响段落语义。

Functional ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠐⠒⠒⠒⠒⠚⠛⣿⡟⠄⠄⢠⠄⠄⠄⡄⠄⠄⣠⡶⠶⣶⠶⠶⠂⣠⣶⣶⠂⠄⣸⡿⠄⠄⢀⣿⠇⠄⣰⡿⣠⡾⠋⠄⣼⡟⠄⣠⡾⠋⣾⠏⠄⢰⣿⠁⠄⠄⣾⡏⠄⠠⠿⠿⠋⠠⠶⠶⠿⠶⠾⠋⠄⠽⠟⠄⠄⠄⠃⠄⠄⣼⣿⣤⡤⠤⠤⠤⠤⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄

它旨在提供如下便利:

  • 因时制宜 使用 DebugLevels 对日志进行分级控制。
  • 恰如其分 提供过滤功能,与 gitignore 配合实现客制化的日志选项。
  • 主次分明 对多行日志进行标题与缩进控制,以提升可读性。
  • 客随主便 永不抛出异常,即使传入了错误的参数或 MessageGetter。
  • 蓄盈待竭 将日志行打包为块处理。
  • 抽丝剥茧 自动识别 Error 并暴露堆栈信息。

Example ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠐⠒⠒⠒⠒⠚⠛⣿⡟⠄⠄⢠⠄⠄⠄⡄⠄⠄⣠⡶⠶⣶⠶⠶⠂⣠⣶⣶⠂⠄⣸⡿⠄⠄⢀⣿⠇⠄⣰⡿⣠⡾⠋⠄⣼⡟⠄⣠⡾⠋⣾⠏⠄⢰⣿⠁⠄⠄⣾⡏⠄⠠⠿⠿⠋⠠⠶⠶⠿⠶⠾⠋⠄⠽⠟⠄⠄⠄⠃⠄⠄⣼⣿⣤⡤⠤⠤⠤⠤⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄

Config

支持 自定义配置 以对你的环境进行私有的日志输出配置。以下是操作步骤:

  1. 在该文件夹下建立 Log4TsSelfConfig.ts 文件

    /project/JavaScripts/depends/log4ts/Log4TsSelfConfig.ts

  2. 在该文件中编写配置

    // recommend to add this file in gitignore
    // Log4TsSelfConfig.ts
    
    import Log4Ts, { Log4TsConfig } from "./Log4Ts";
    
    Log4Ts.setConfig(
        new Log4TsConfig()
            .addBlackList("IDontWantThis"),
    );
  3. 将文件在 gitignore 中忽略

    # Custom
    Log4TsSelfConfig.ts

Chunk

使用 setChunkHandlersetChunkSize 配置日志缓存块的处理方式与大小。

// recommend to add this file in gitignore

import Log4Ts, {Log4TsConfig} from "./Log4Ts";

Log4Ts.setConfig(
       new Log4TsConfig()
               .setChunkHandler((chunk) => {
                   console.log(chunk);
               })
               .setChunkSize() // set size 1
               .setChunkSize(50), // 当未调用过 setChunkSize 时,使用默认值 50
);

由于某些运行时 TypeScript 版本限制,无法使用 TypeScript5.2 的 Dispose 特性。建议在生命周期结束后,手动调用最后一次未满的 Chunk 处理。

import Log4Ts from "./Log4Ts";

Log4Ts.forceHandleChunk();

Snippet ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠐⠒⠒⠒⠒⠚⠛⣿⡟⠄⠄⢠⠄⠄⠄⡄⠄⠄⣠⡶⠶⣶⠶⠶⠂⣠⣶⣶⠂⠄⣸⡿⠄⠄⢀⣿⠇⠄⣰⡿⣠⡾⠋⠄⣼⡟⠄⣠⡾⠋⣾⠏⠄⢰⣿⠁⠄⠄⣾⡏⠄⠠⠿⠿⠋⠠⠶⠶⠿⠶⠾⠋⠄⠽⠟⠄⠄⠄⠃⠄⠄⣼⣿⣤⡤⠤⠤⠤⠤⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄

Snippet 是一种由 IDE 支持的代码片段,允许通过简写来快速输入重复的代码模式。

如,以下配置允许你仅输入 llog 即可生成包含所在类名或文件名的 Log4Ts 的日志输出代码。

Visual Studio Code

{
    "Log4Ts": {
        "prefix": "llog",
        "body": [
            "Log4Ts.${1:log}(${TM_FILENAME_BASE} ,`${2:message}`)"
        ],
        "description": "Log with Log4Ts"
    }
}

JetBrains

jetBrains-snippet

Log4Ts.$LOGMETHOD$($CLASSNAME$, `$END$`)
1.4.7

11 months ago

1.4.6

11 months ago

1.4.5

11 months ago

1.4.3

12 months ago

1.4.2

12 months ago

1.4.0

1 year ago