1. ホーム
  2. node.js

[解決済み] Node.jsのロギング

2022-04-20 18:45:38

質問

Node.Jsアプリケーションでログを処理するのに役立つライブラリはありますか?私がしたいことは、すべてのログをファイルに書き込むことと、特定のサイズまたは日付の後にファイルをロールアウトするようなオプションが必要なことです。


私は、log4jsを組み込みました。私は、メンテナンスの容易さのために、1つのファイルですべての構成の詳細を維持し、他のアプリケーション・ファイルのメソッドだけを使用しようとしています。 しかし、それは期待されるように動作しません。以下は、私がしようとしていることです。

var log4js = require('log4js'); 
log4js.clearAppenders()
log4js.loadAppender('file');
log4js.addAppender(log4js.appenders.file('test.log'), 'test');
var logger = log4js.getLogger('test');
logger.setLevel('ERROR');


var traceLogger = function (message) {
        logger.trace('message');
    };

var errorLogger = function (message) {
        logger.trace(message);
    };


exports.trace = traceLogger;
exports.error = errorLogger;

このファイルを他のファイルにインクルードして試してみました。

log.error ("Hello Error Message");

しかし、それは動作しません。何か問題があるのでしょうか?

どうすればいいですか?

ウィンストン は、かなり優れたロギング・ライブラリです。これを使えば、ログをファイルに書き出すことができます。

コードは次のようなものになります。

var winston = require('winston');

var logger = new (winston.Logger)({
  transports: [
    new (winston.transports.Console)({ json: false, timestamp: true }),
    new winston.transports.File({ filename: __dirname + '/debug.log', json: false })
  ],
  exceptionHandlers: [
    new (winston.transports.Console)({ json: false, timestamp: true }),
    new winston.transports.File({ filename: __dirname + '/exceptions.log', json: false })
  ],
  exitOnError: false
});

module.exports = logger;

すると、このように使うことができます。

var logger = require('./log');

logger.info('log to file');