【问题标题】:write logs in file using log4js in node js在节点 js 中使用 log4js 将日志写入文件
【发布时间】:2014-04-19 12:38:55
【问题描述】:

我的代码是:

log4js.loadAppender('file');
log4js.addAppender(log4js.appenders.file('logs/cheese.log'), 'cheese');
logger.setLevel('DEBUG');

logger.trace('Entering cheese testing');
logger.debug('Got cheese.');
logger.info('Cheese is Gouda.');
logger.warn('Cheese is quite smelly.');
logger.error('Cheese is too ripe!');
logger.fatal('Cheese was breeding ground for listeria.');

它正在创建一个名为“cheese”的文件,但其中没有任何内容。 那里面的内容怎么写?

【问题讨论】:

  • 你能弄清楚这个吗?

标签: node.js logging log4js-node


【解决方案1】:

此解决方案可帮助您在您的文件夹日志中创建日志文件夹和三个文件 error.log、debug.log 和 info.log。为我工作。谢谢。

var log4js = require('log4js'); // include log4js

log4js.configure({ // configure to use all types in different files.
    appenders: [
        {   type: 'file',
            filename: "/logs/error.log", // specify the path where u want logs folder error.log
            category: 'error',
            maxLogSize: 20480,
            backups: 10
        },
        {   type: "file",
            filename: "/logs/info.log", // specify the path where u want logs folder info.log
            category: 'info',
            maxLogSize: 20480,
            backups: 10
        },
        {   type: 'file',
            filename: "/logs/debug.log", // specify the path where u want logs folder debug.log
            category: 'debug',
            maxLogSize: 20480,
            backups: 10
        }
    ]
});

var loggerinfo = log4js.getLogger('info'); // initialize the var to use.
var loggererror = log4js.getLogger('error'); // initialize the var to use.
var loggerdebug = log4js.getLogger('debug'); // initialize the var to use.

loggerinfo.info('This is Information Logger');
loggererror.info('This is Error Logger');
loggerdebug.info('This is Debugger');

【讨论】:

    【解决方案2】:

    在上面的代码中,您缺少记录器声明: 添加行var logger = log4js.getLogger('cheese');

    整个代码块如下:

    var log4js = require('log4js');
    
    log4js.loadAppender('file');
    log4js.addAppender(log4js.appenders.file('logs/cheese.log'), 'cheese');
    
    var logger = log4js.getLogger('cheese');
    
    logger.setLevel('DEBUG');
    logger.trace('Entering cheese testing');
    logger.debug('Got cheese.');
    logger.info('Cheese is Gouda.');
    logger.warn('Cheese is quite smelly.');
    logger.error('Cheese is too ripe!');
    logger.fatal('Cheese was breeding ground for listeria.');
    

    Reference

    【讨论】:

    • 我使用了 log4js v2.0.1,它返回 TypeError: log4js.loadAppender is not a function
    【解决方案3】:

    在版本 2.x.

    你需要这样做:

    var log4js = require('log4js');
    log4js.configure({
      appenders: { 'file': { type: 'file', filename: 'logs/cheese.log' } },
      categories: { default: { appenders: ['file'], level: 'debug' } }
    });
    
    var logger = log4js.getLogger('cheese');
    
    logger.setLevel('DEBUG');
    logger.trace('Entering cheese testing');
    logger.debug('Got cheese.');
    logger.info('Cheese is Gouda.');
    logger.warn('Cheese is quite smelly.');
    logger.error('Cheese is too ripe!');
    logger.fatal('Cheese was breeding ground for listeria.');
    

    如果您想根据日志消息中的属性(如上面的文件名)动态创建文件,请查看multiFile appender

    【讨论】:

    • TypeError: logger.setLevel 不是一个函数。通过删除 logger.setLevel('DEBUG');对我来说它工作正常。
    • @slorenzo 您的链接已失效。请问可以更新吗?
    【解决方案4】:

    Log4js 具有多文件配置功能。见here

    log4js.configure({
      appenders: {
        out: { type: 'stdout' },
        afile: { type: 'multiFile', base: 'logs/', property: 'categoryName', extension: '.log' }
      },
      categories: {
        default: { appenders: ['out'], level: 'info' },
        tofile: { appenders: ['afile'], level: 'debug' }
      }
    });
    

    然后开始登录文件logs/xyz.log

    const xyzlog = log4js.getLogger('tofile.xyz');
    xyzlog.info('Hello!');
    

    【讨论】:

      猜你喜欢
      • 2018-05-17
      • 2020-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-10
      • 2013-06-23
      相关资源
      最近更新 更多