是否可以为 nodejs 中的每个 postgresql 模式分离日志?
Is it possible to have separated logs for each postgresql schema in nodejs?
我将 nodejs 与 postgres 数据库和许多模式(以及 pm2 作为进程管理器)一起使用。
每个模式都是一个用户,因此在每个查询中我都将模式名称作为参数传递。
目前所有 console.logs 都写在一个文件中,由 pm2 轮换。
我的目标是为每个 schema/user,例如 user_1.log、user_2.log 等创建一个单独的日志。
是否有一个 way/node 模块可以做到这一点?
谢谢
启动 pm2 进程时传递自定义日志文件路径和环境变量怎么样?
SCHEMA_USER=user_1 pm2 start app.js -i 1 -o ./logs/user_1.log -e ./logs/user_1.err
SCHEMA_USER=user_2 pm2 start app.js -i 1 -o ./logs/user_2.log -e ./logs/user_2.err
或者您可以使用 simple-node-logger 并制作记录器存储,这将传送将记录到您所需位置的对象。
在某处创建 log-manager.js
内容如下:
const path = require('path');
const SimpleNodeLogger = require('simple-node-logger'),
class LogManager {
static instances = {};
static get(key) {
if (!key) return console;
if (Logger.instances[key]) return Logger.instances[key];
const opts = {
logFilePath: path.join(__dirname, 'logs', key+'.log'),
timestampFormat: 'YYYY-MM-DD HH:mm:ss.SSS'
},
return Logger.instances[key] = SimpleNodeLogger.createSimpleLogger(opts);
}
}
module.exports = LogManager;
并将其与快速应用程序一起使用:
const logManager = require('./log-manager');
request.get('/users/:id', (req, res) => {
const logger = logManager.get('user_' + req.params.id);
// doing somethings
logger.error('User not found');
req.status(404).send({});
});
我将 nodejs 与 postgres 数据库和许多模式(以及 pm2 作为进程管理器)一起使用。 每个模式都是一个用户,因此在每个查询中我都将模式名称作为参数传递。 目前所有 console.logs 都写在一个文件中,由 pm2 轮换。 我的目标是为每个 schema/user,例如 user_1.log、user_2.log 等创建一个单独的日志。 是否有一个 way/node 模块可以做到这一点?
谢谢
启动 pm2 进程时传递自定义日志文件路径和环境变量怎么样?
SCHEMA_USER=user_1 pm2 start app.js -i 1 -o ./logs/user_1.log -e ./logs/user_1.err
SCHEMA_USER=user_2 pm2 start app.js -i 1 -o ./logs/user_2.log -e ./logs/user_2.err
或者您可以使用 simple-node-logger 并制作记录器存储,这将传送将记录到您所需位置的对象。
在某处创建 log-manager.js
内容如下:
const path = require('path');
const SimpleNodeLogger = require('simple-node-logger'),
class LogManager {
static instances = {};
static get(key) {
if (!key) return console;
if (Logger.instances[key]) return Logger.instances[key];
const opts = {
logFilePath: path.join(__dirname, 'logs', key+'.log'),
timestampFormat: 'YYYY-MM-DD HH:mm:ss.SSS'
},
return Logger.instances[key] = SimpleNodeLogger.createSimpleLogger(opts);
}
}
module.exports = LogManager;
并将其与快速应用程序一起使用:
const logManager = require('./log-manager');
request.get('/users/:id', (req, res) => {
const logger = logManager.get('user_' + req.params.id);
// doing somethings
logger.error('User not found');
req.status(404).send({});
});