@condor-labs/logger

中文文档
3.0.0发布于 2023/03/24MITCommonJS近 30 天下载 3392

This module provides an useful helper to save structured logs in the stdout.

原始使用文档
文档目录12 节
  1. Compatibility
  2. How to use it
  3. Examples
  4. Logging Error objects
  5. Features
  6. How to Publish
  7. Generate lib files using babel
  8. Increasing package version
  9. Login in NPM by console.
  10. Uploading a new version
  11. Contributors
  12. License

This module provides a useful helper to save structured logs in the stdout. Versions greater or equal to 2.x of this module are recommended for Back-end applications and not for Web clients. See CHANGELOG for further information.

Structured logs are really important to process them in Splunk.

Compatibility

Starting from version 3.x.x, the minimum supported version of Node.js is v14.16.x.

How to use it

To use the library you just need to follow the following steps:

  1. Install the library with npm
npm install @condor-labs/logger
  1. Import the library:
const logger = require("@condor-labs/logger");

Examples

index.js

try {
    const logger = require('@condor-labs/logger');
    console.log('-------------------');
    logger.debug({ y: 1, z: 2 });
    console.log('-------------------');
    logger.info({ a: 1, b: 2 });
    console.log('-------------------');
    logger.warn('My text...');
    console.log('-------------------');
    logger.error(Error("my error"));
    console.log('-------------------');
    logger.error('THIS IS SIMPLE TEXT', {name: "my name", country:"Colombia"}, Error("This is an error"));
    console.log('-------------------');
    const arr = [{}, 1, 2];
    arr[0].arr = arr;
    // ⛔️ TypeError: Converting circular structure to JSON
    logger.fatal(arr);
} catch (error) {
    console.error(error);
}

Logging Error objects

Error objects are special objects that needs extra handling. We recommend to logs errors instances in this way:

const logger = require('@condor-labs/logger');

const veryImportantData = { key: '1A2B3C', client: 'my_client' };

try {
    // Runs my code and throws an error
    throw new Error('Unauthorized');
} catch (error) {
    // OK
    logger.error('ERROR_DURING_AUTHORIZATION', error, { veryImportantData });
    // NOT RECOMMENDED
    logger.error('ERROR_DURING_AUTHORIZATION', { error, veryImportantData });
}

Output (this output is formatted for reading purposes. In runtime, it will be printed as one-line JSON):

/*
OK:
{
  "level": "ERROR",
  "time": 1676986542037,
  "pid": 29461,
  "hostname": "MyPC.local",
  "arg1": "ERROR_DURING_AUTHORIZATION",
  "arg2": {
    "message": "Unauthorized",
    "stack": "Error: Unauthorized
        at Object.<anonymous> (/.../index.js:30:11)
        at Module._compile (node:internal/modules/cjs/loader:1155:14)
        at Object.Module._extensions..js (node:internal/modules/cjs/loader:1209:10)
        at Module.load (node:internal/modules/cjs/loader:1033:32)
        at Function.Module._load (node:internal/modules/cjs/loader:868:12)
        at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
        at node:internal/main/run_main_module:22:47"
  },
  "arg3": { "veryImportantData": { "key": "1A2B3C", "client": "my_client" } }
}

NOT RECOMMENDED WAY:
{
  "level": "ERROR",
  "time": 1676986691805,
  "pid": 29631,
  "hostname": "MyPC.local",
  "arg1": "ERROR_DURING_AUTHORIZATION",
  "arg2": {
    "error": {},
    "veryImportantData": { "key": "1A2B3C", "client": "my_client" }
  }
}
*/

Notice that error in arg2 is printed as an empty object.

Features

  • Set your env LOGGER_DEBUG_MODE = 1 to show the debug messages ( logger.debug({ y: 1, z: 2 });) otherwise those message won't appear in console.
  • Import loggerMiddleware from the logger and set it as middleware of your ExpressJS server:
const logger = require('@condor-labs/logger');
const { loggerMiddleware } = logger;
...
app.use(loggerMiddleware());

This middleware is a function that instances the pino-http module for ExpressJS-based servers. Check the docs for further information.

How to Publish

Generate lib files using babel

Once your contribution is done in the files of folder src/logger/, run npm run build. This will generate a transpilated version of your changes on folder lib/, that contains the file exported as the logger library. then, move to the next step to publish.

Increasing package version

You will need to update the package.json file placed in the root folder.

identify the property version and increase the right number in plus one.

Login in NPM by console.

 npm login
 [Enter username]
 [Enter password]
 [Enter email]

If all is ok the console will show you something like this : Logged in as USERNAME on https://registry.npmjs.org/.

Uploading a new version

 npm publish --access public

Ref: https://docs.npmjs.com/getting-started/publishing-npm-packages

Note: you will need to have a NPM account, if you don't have one create one here: https://www.npmjs.com/signup

Contributors

The original author and current lead maintainer of this module is the @condor-labs development team.

More about Condor Labs Here.

License

MIT

版本与发布记录

@condor-labs/logger 共发布 14 个版本,首次发布于 2019/06/28;过去 12 个月发布了 0 个版本。

版本发布日期距今
3.0.0latest2023/03/243 年前
2.0.22023/03/233 年前
2.0.12023/02/233 年前
2.0.02023/02/103 年前
1.4.0-rc.12023/02/093 年前
1.3.02022/08/314 年前

关于 @condor-labs/logger 的常见问题

@condor-labs/logger 是什么?

This module provides an useful helper to save structured logs in the stdout.

如何安装 @condor-labs/logger?

在项目目录运行 npm install @condor-labs/logger,或使用 pnpm add / yarn add / bun add。

@condor-labs/logger 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/condor-labs__logger 是否存在。

@condor-labs/logger 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@condor-labs/logger 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=14.6.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@condor-labs/logger 可以商用吗?

@condor-labs/logger 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@condor-labs/logger 的下载量有多少?

根据 npm 官方下载统计,@condor-labs/logger 在 2026/10/11 – 2026/11/09 这 30 天内被下载 3,392 次,日均约 113 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@condor-labs/logger 还在维护吗?

最新版本 3.0.0 发布于 2023/03/24(3 年前);至今共发布 14 个版本,其中过去 12 个月发布了 0 个;首次发布于 2019/06/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。