@artusx/plugin-xtransit
插件基于 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',
},
};