用log4js在新的差异文件中写入日志?

Tec*_*ain 5 logging node.js log4js-node

我想将日志写入不同的文件。

const log4js = require('log4js');
log4js.configure({
    appenders: { integra: { type: 'file', filename: './logs/doc.log' } },
    categories: { default: { appenders: ['doc'], level: 'error' } }
});
const logger = log4js.getLogger('doc');

module.exports = logger
Run Code Online (Sandbox Code Playgroud)

按照上面的代码,我只能配置一次日志。但是我想为每个日志动态地写一个日志文件。在上述情况下,我只能写一个文件。我需要一种可以写入新日志文件的方法。我想在不同的路径下写入多个日志文件。

Soh*_*ail 6

您可以创建多个附加程序和类别,并在写入之前相应地获取记录器。以下将创建三个不同的文件。

const log4js = require('log4js');

log4js.configure({
  appenders: { 
    nasty: { type: 'file', filename: 'nasty.log' },
    sleek: { type: 'file', filename: 'sleek.log' },
    tracer: { type: 'file', filename: 'tracer.log' },
  },
  categories: { 
    default: { 
      appenders: ['nasty'], level: 'error' 
    },
    sleek: { 
      appenders: ['sleek'], level: 'info' 
    },
    tracer: { 
      appenders: ['tracer'], level: 'trace' 
    }
  }
});

const nastyLogger = log4js.getLogger('nasty');
nastyLogger.error(new Error('This gets logged in nastly logger'));
nastyLogger.debug('This will not be logged in nasty logger');

const sleekLogger = log4js.getLogger('sleek');
sleekLogger.info('This will be logged in sleek logger');
sleekLogger.debug('This will not be logged in sleek logger');

const tracerLogger = log4js.getLogger('tracer');
tracerLogger.info('This will be logged in tracer logger');
tracerLogger.debug('This will also be logged in tracer logger');
Run Code Online (Sandbox Code Playgroud)