Ecosystem
ArtusX
Plugins
xtransit

@artusx/plugin-xtransit

https://github.com/X-Profiler (opens in a new tab)

插件基于 X-Profiler 封装,用于 Node.js 性能监控,已在 core 中默认集成,但并未开启。

配置

配置完全兼容 X-Profiler,详细配置请参考官网文档。

默认配置

默认配置仅作为示例使用。

config.default.ts
export default () => {
  return {
    xprofiler: {
      log_level: 1,
      enable_http_profiling: false,
    },
 
    xtransit: {
      server: '',
      appId: '',
      appSecret: '',
 
      disks: [],
      errors: [
        // `${tmpDir}/logs/common-error.log`,
        // `${tmpDir}logs/stderr.log`
      ],
      packages: [
        // `${rootDir}/package.json`
      ],
 
      // logDir: 'xprofiler',
      logInterval: undefined,
      ipMode: false,
      libMode: true,
      errexp: /\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/i,
      logger: undefined,
      checkThrow: true,
    },
  };
};

生产配置

插件需要配置 logger 插件使用,日志上报能力等依赖日志输出,此处演示如何配置 log4js 使用。

config.prod.ts
import os from 'os';
import path from 'path';
import fs from 'fs-extra';
import { LoggerOptions, LoggerLevel } from '@artus/core';
import { Log4jsConfiguration, XprofilerConfig, XtransitConfig } from '@artusx/core';
 
const tmpDir = os.tmpdir();
const rootDir = path.resolve(__dirname, '../..');
const logsDir = path.join(tmpDir, 'artusx/logs');
const xprofilerLogDir = path.join(logsDir, 'xprofiler');
 
export default () => {
  fs.ensureDirSync(logsDir);
  fs.ensureDirSync(xprofilerLogDir);
 
  const log4js: Log4jsConfiguration = {
    appenders: {
      console: { type: 'console' },
      info: { type: 'file', filename: `${logsDir}/info.log` },
      error: { type: 'file', filename: `${logsDir}/error.log` },
    },
    categories: {
      console: {
        appenders: ['console'],
        level: 'info',
      },
      error: {
        appenders: ['error'],
        level: 'error',
      },
      default: {
        appenders: ['info'],
        level: 'info',
      },
    },
  };
 
  const xprofiler: XprofilerConfig = {
    log_level: 0,
    enable_http_profiling: true,
  };
 
  const xtransit: XtransitConfig = {
    // 请替换为实际配置如
    server: 'ws://127.0.0.1:9190',
 
    // 请替换为实际配置如
    appId: 1,
 
    // 请替换为实际配置
    appSecret: 'appSecret',
 
    logDir: xprofilerLogDir,
    // logInterval: 60,
 
    errors: [`${logsDir}/info.log`, `${logsDir}/error.log`],
    packages: [`${rootDir}/package.json`],
  };
 
  return {
    // log4js
    log4js,
 
    // xtransit
    xprofiler,
    xtransit,
  };
};

启用插件

core 插件已默认集成,配置开启即可。

plugin.ts
export default {
  log4js: {
    enable: true,
  },
};

如需单独使用,可通过如下方式开启插件。

plugin.ts
export default {
  log4js: {
    enable: true,
    package: '@artusx/plugin-xtransit',
  },
};