npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@haixing_hu/logging

v1.4.1

Published

A simple JavaScript logging framework

Downloads

271

Readme

js-logging

npm package License English Document CircleCI Coverage Status

@haixing_hu/logging 是一个 JavaScript 库,通过装饰器为类方法和属性提供强大的日志记录功能。 该库旨在与Vue.js 类组件无缝集成,为处理 JavaScript 项目中的日志记录提供了优雅的解决方案。

安装

使用 npm 或 yarn 安装该库:

npm install @haixing_hu/logging

yarn add @haixing_hu/logging

Logger

Logger 类提供了一个简单而灵活的日志记录接口。

获取或创建 Logger

你可以通过调用静态方法 Logger.getLogger(name, options) 获取一个 Logger 实例,其中:

  • name 是 logger 的标识符。如果已经存在具有相同名称的 logger,则返回该实例;否则将创建一个新的 logger。
  • options(可选)是一个对象,可能包括:
    • appender: object:指定日志消息的输出目的地。此对象必须实现 tracedebuginfowarnerror 方法。 如果省略,将使用 logger 的现有 appender,或者为新创建的 logger 分配默认 appender。
    • level: string:定义日志记录级别(TRACEDEBUGINFOWARNERRORNONE)。不区分大小写。 如果省略,将使用 logger 的现有日志级别,或者为新创建的 logger 分配默认日志级别。

记录日志消息

  • logger.trace(message, ...args):记录一个 trace 级别的消息。
  • logger.debug(message, ...args):记录一个 debug 级别的消息。
  • logger.info(message, ...args):记录一个 info 级别的消息。
  • logger.warn(message, ...args):记录一个警告级别的消息。
  • logger.error(message, ...args):记录一个错误级别的消息。
  • logger.log(level, message, ...args):以指定的日志级别记录消息。

你可以在日志消息中使用占位符动态插入变量:

  • %o%O:JavaScript 对象输出。点击对象名称可以在检查器中查看更多信息。
  • %d%i:整数输出(支持格式化)。例如,logger.info('Foo %.2d', 1.1) 将数字输出为两位有效数字并带有前导0: Foo 01
  • %s:字符串输出。
  • %f:浮点数输出(支持格式化)。例如,logger.debug("Foo %.2f", 1.1) 将数字输出为两位小数:Foo 1.10

示例:

import Logger from '@haixing_hu/logging';

const logger = Logger.getLogger('MyClass');
logger.trace('This is a trace message with argument %s and argument %o', 'foo', { bar: 'baz' });
logger.debug('This is a debug message with argument %s and argument %o', 'foo', { bar: 'baz' });
logger.info('This is an info message with argument %s and argument %o', 'foo', { bar: 'baz' });
logger.warn('This is a warning message with argument %s and argument %o', 'foo', { bar: 'baz' });
logger.error('This is an error message with argument %s and argument %o', 'foo', { bar: 'baz' });
const level = 'info';
logger.log(level, 'This is an %s message with argument %s and argument %o', level, 'foo', { bar: 'baz' });

设置日志级别

使用 logger.setLevel(level) 调整 logger 的日志级别。

可用的日志级别有:TRACEDEBUGINFOWARNERRORNONE(不区分大小写)。

设置日志 Appender

使用 logger.setAppender(appender) 为 logger 分配一个自定义的 appender 对象,该对象定义了以下方法:

  • trace(message, ...args)
  • debug(message, ...args)
  • info(message ...args)
  • warn(message, ...args)
  • error(message, ...args)

示例:

const logger = Logger.getLogger('MyClass');
logger.setAppender(console);    // Outputs log messages to the console.

启用或禁用日志记录

  • logger.enable():启用日志记录。
  • logger.disable():禁用日志记录。
  • logger.setEnabled(enabled):动态控制日志记录的启用与禁用。

管理日志记录器

  • Logger.clearAllLoggers():清除所有已注册的日志记录器。
  • Logger.getLevel(name):获取特定日志记录器的日志级别。
  • Logger.setLevel(name, level):设置特定日志记录器的日志级别。

默认级别和 Appender

当创建一个新日志记录器时,如果没有指定级别或 appender,将使用默认的日志级别和 appender。

  • Logger.getDefaultLevel():获取默认日志级别。
  • Logger.setDefaultLevel(level):设置默认日志级别。
  • Logger.resetDefaultLevel():将默认日志级别重置为出厂值。
  • Logger.getDefaultAppender():获取默认日志 appender。
  • Logger.setDefaultAppender(appender):设置默认日志 appender。
  • Logger.resetDefaultAppender():将默认日志 appender 重置为出厂值。

全局日志管理

  • Logger.setAllLevels(level):将指定日志级别应用于所有现有日志记录器。
  • Logger.resetAllLevels():将所有现有日志记录器的日志级别重置为默认日志级别。
  • Logger.setAllAppenders(appender):将指定日志 appender 应用于所有现有日志记录器。
  • Logger.resetAllAppenders():将所有现有日志记录器的日志 appender 重置为默认 appender。

重置日志记录器

  • Logger.reset():将日志记录器重置为出厂状态。这将清除所有已注册的日志记录器、重置默认日志级别和默认日志 appender。

@Log 装饰器

@Log 装饰器会自动记录方法签名,包括类名、方法名和参数。

示例:

import { Log } from '@haixing_hu/logging';

class Person {
  @Log
  eat(meal) {
    // method implementation
  }
}

const person = new Person();
const meal = new Meal();
person.eat(meal); // The log will print the method calling signature

@HasLogger 装饰器

@HasLogger 装饰器会为类添加一个命名的日志记录器,可以通过 logger 属性访问。

示例:

import { HasLogger } from '@haixing_hu/logging';

@HasLogger
class MyClass {
  foo() {
    this.logger.debug('This is MyClass.foo()');
  }
}

与 Vue.js 类组件一起使用

你可以在Vue.js 类组件中使用 @Log@HasLogger 装饰器:

import { HasLogger, Log } from '@haixing_hu/logging';
import { Component, toVue } from '@haixing_hu/vue3-class-component';

@Component({
  template: '<p @click="foo">{{ message }}</p>',
})
@HasLogger
class MyComponent {
  
  message = 'hello world';
  
  @Log
  foo() {
    this.logger.debug('This is MyComponent.foo()');
  }
}

export default toVue(MyComponent);

注意@HasLogger 装饰器必须放在 @Component 装饰器的后面

贡献

如果您发现任何问题或有改进建议,请随时在GitHub 仓库上提交 issue 或 pull request。

许可证

@haixing_hu/logging 根据 Apache 2.0 许可证分发。详情请参阅 LICENSE 文件。