5

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

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

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

4

2 回答 2

5

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

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');
于 2019-10-08T03:12:52.893 回答
2

使用 MultiFile Appender 将日志动态写入多个文件,您的 log4js 配置将如下所示:

  appenders: { integra: {  type: 'multiFile', base: 'logs/', property: 'prop', extension: '.log'} },

在哪里 :

  1. base :生成的日志文件名的基本部分
  2. property : 用于分割文件的值
  3. extension :生成的日志文件名的后缀。

这是一个用于为每个用户创建日志文件的示例:

const log4js = require('log4js');
const uuidv1 = require('uuid/v1'); //used for generating random string

log4js.configure({
    appenders: {
      everything: {
        type: 'multiFile', base: 'logs/', property: 'userID', extension: '.log'
      }
    },
    categories: {
      default: { appenders: [ 'everything' ], level: 'debug'}
    }
  });

  const userLogger = log4js.getLogger('user');

    userLogger.addContext('userID', uuidv1()); 
    userLogger.info('New file created');
    userLogger.addContext('userID', uuidv1());
    userLogger.info('New file created');
于 2019-10-06T23:06:30.950 回答