Как насчет передачи пользовательского пути к файлу журнала и переменной среды при запуске процесса 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({});
});