183

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


メンテナンスを容易にするために、すべての構成の詳細を 1 つのファイルに保持し、他のアプリケーション ファイルのメソッドのみを使用するように log4js im を組み込みました。しかし、期待どおりには機能しません。これが私がやろうとしていることです

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");

しかし、それは機能していません。これには何か問題がありますか?

4

10 に答える 10

201

Winstonは非常に優れたロギング ライブラリです。それを使用して、ログをファイルに書き出すことができます。

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

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');
于 2012-08-18T15:40:22.720 に答える
60

Scribe.JS 軽量ロガー

私は多くのロガーを調べましたが、軽量のソリューションを見つけることができませんでした。そのため、github に投稿されている簡単なソリューションを作成することにしました。

  • ユーザー、日付、およびレベルごとに編成されたファイルを保存します
  • きれいな出力が得られます (私たちは皆それを気に入っています)
  • 使いやすい HTML インターフェイス

これがお役に立てば幸いです。

オンラインデモ

http://bluejamesbond.github.io/Scribe.js/

ログへの安全な Web アクセス

あ

コンソールにもきれいなテキストを出力します!

あ

Web アクセス

あ

ギットハブ

https://github.com/bluejamesbond/Scribe.js

于 2014-01-23T23:40:09.027 に答える
31

Log4jsは、nodejs アプリケーションの最も一般的なロギング ライブラリの 1 つです。

多くの優れた機能をサポートしています。

  1. 色付きのコンソール ロギング
  2. ノードの console.log 関数の置き換え (オプション)
  3. ファイルサイズに基づくログローリングを備えたファイルアペンダー
  4. SMTP、GELF、hook.io、Loggly アペンダー
  5. マルチプロセス アペンダー (ワーカー プロセスがある場合に便利)
  6. Connect/Express サーバー用のロガー
  7. 構成可能なログ メッセージのレイアウト/パターン
  8. さまざまなログ カテゴリのさまざまなログ レベル (アプリの一部を DEBUG としてログに記録し、他は ERRORS のみをログに記録するなど)

例:

  1. インストール:npm install log4js

  2. 構成 ( ./config/log4js.json):

    {"appenders": [
        {
            "type": "console",
            "layout": {
                "type": "pattern",
                "pattern": "%m"
            },
            "category": "app"
        },{
            "category": "test-file-appender",
            "type": "file",
            "filename": "log_file.log",
            "maxLogSize": 10240,
            "backups": 3,
            "layout": {
                "type": "pattern",
                "pattern": "%d{dd/MM hh:mm} %-5p %m"
            }
        }
    ],
    "replaceConsole": true }
    
  3. 使用法:

    var log4js = require( "log4js" );
    log4js.configure( "./config/log4js.json" );
    var logger = log4js.getLogger( "test-file-appender" );
    // log4js.getLogger("app") will return logger that prints log to the console
    logger.debug("Hello log4js");// store log in file
    
于 2014-04-30T04:33:13.643 に答える
6

「logger.setLevel('ERROR');」問題を引き起こしています。理由はわかりませんが、「ALL」以外に設定すると、ファイルに何も出力されません。私は少し突っついて、あなたのコードを修正しました。それは私にとってはうまくいっています。2 つのファイルを作成しました。

ロガー.js

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 getLogger = function() {
   return logger;
};

exports.logger = getLogger();

logger.test.js

var logger = require('./logger.js')

var log = logger.logger;

log.error("ERROR message");
log.trace("TRACE message");

「node logger.test.js」を実行すると、test.log ファイルに「エラー メッセージ」しか表示されません。レベルを「TRACE」に変更すると、両方の行が test.log に出力されます。

于 2013-11-05T23:44:16.287 に答える
2

「nodejslogger」モジュールは、単純なロギングに使用できます。3 つのレベルのロギング (INFO、ERROR、DEBUG) があります。

var logger = require('nodejslogger')
logger.init({"file":"output-file", "mode":"DIE"})

D : デバッグ、I : 情報、E : エラー

logger.debug("Debug logs")
logger.info("Info logs")
logger.error("Error logs")

モジュールには、 https ://www.npmjs.com/package/nodejslogger からアクセスできます。

于 2015-11-27T17:44:47.163 に答える
0

各回答は 5 ~ 6 年前のものであるため、少し古くなっているか、価値が下がっています。2020年に話しましょう。

simple-node-loggerは、コンソール、ファイル、およびローリング ファイル アペンダ用のシンプルなマルチレベル ロガーです。機能は次のとおりです。

  1. レベル: trace、debug、info、warn、error、および fatal レベル (および all と off)

  2. デフォルトが HH:mm:ss.SSS の柔軟なアペンダー/フォーマッター LEVEL メッセージ アペンダーを追加して、コンソール、ファイル、ローリング ファイルなどに出力を送信

  3. その場でログレベルを変更する

  4. ドメインとカテゴリの列

  5. ベースアペンダーのオーバーライド可能なフォーマットメソッド

  6. 警告、エラーなどを含むすべてのログ ステートメントの数を追跡する統計

どの nodejs Web アプリケーションでも簡単に使用できます。

   // create a stdout console logger
  const log = require('simple-node-logger').createSimpleLogger();

また

  // create a stdout and file logger
  const log = require('simple-node-logger').createSimpleLogger('project.log');

また

  // create a custom timestamp format for log statements
  const SimpleNodeLogger = require('simple-node-logger'),
  opts = {
      logFilePath:'mylogfile.log',
      timestampFormat:'YYYY-MM-DD HH:mm:ss.SSS'
   },
  log = SimpleNodeLogger.createSimpleLogger( opts );

また

  // create a file only file logger
  const log = require('simple-node-logger').createSimpleFileLogger('project.log');

また

  // create a rolling file logger based on date/time that fires process events
  const opts = {
      errorEventName:'error',
       logDirectory:'/mylogfiles', // NOTE: folder must exist and be writable...
        fileNamePattern:'roll-<DATE>.log',
         dateFormat:'YYYY.MM.DD'
  };
  const log = require('simple-node-logger').createRollingFileLogger( opts );

メッセージは次の方法でログに記録できます

  log.info('this is logged info message')
  log.warn('this is logged warn message')//etc..

プラス ポイント: ログをコンソールまたはソケットに送信できます。ログ レベルに追加することもできます。

これは、ログ機能を処理する最も効果的で簡単な方法です。

于 2020-08-13T03:58:31.793 に答える