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");
しかし、それは機能していません。これに何か問題はありますか?
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');
私はたくさんのロガーを調べましたが、軽量のソリューションを見つけることができませんでした - そこで私はgithubに投稿される簡単なソリューションを作ることにしました。
これがお役に立てば幸いです。
http://bluejamesbond.github.io/Scribe.js/
Log4js はnodejsアプリケーションで最も人気のあるロギングライブラリの1つです。
それは多くのクールな機能をサポートしています。
例:
インストール:npm install log4js
設定(./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 }
使用法:
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
https://npmjs.org/doc/coding-style.html で推奨される、issacsでnpmlogを使用することもできます。
あなたはここでこのモジュールを見つけることができます https://github.com/isaacs/npmlog
"logger.setLevel( 'ERROR');"問題を引き起こしています。理由はわかりませんが、「ALL」以外に設定すると、ファイルには何も表示されません。私は少しあざけってあなたのコードを修正しました。それは私にとってはうまくいっています。 2つのファイルを作成しました。
logger.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ファイルに "ERROR message"しか表示されません。レベルを "TRACE"に変更すると、両方の行がtest.logに出力されます。
Winstonはほとんどの開発者にとって強力な選択です。私は長い間ウィンストンを使ってきました。最近私は、アプリケーションロギングを次のレベルに引き上げるpapertrailでwinstonを使用しました。
これが彼らのサイトからのNiceスクリーンショットです。
その有用性
異なるシステムからのログを一箇所で管理できます。 2つのバックエンドが通信していて、両方からのログをその場で確認できる場合、これは非常に便利です。
ログはライブです。運用サーバーのリアルタイムログを見ることができます。
強力な検索とフィルタ
ログに特定のテキストが見つかった場合は、アラートを作成してEメールを送信することができます。
そしてもっと見つけることができます http://help.papertrailapp.com/kb/how-it-works/event-viewer/
winston
、 winston-express
および winston-papertrail
ノードモジュールを使った簡単な設定。
import winston from 'winston';
import expressWinston from 'express-winston';
//
// Requiring `winston-papertrail` will expose
// `winston.transports.Papertrail`
//
require('winston-papertrail').Papertrail;
// create winston transport for Papertrail
var winstonPapertrail = new winston.transports.Papertrail({
Host: 'logsX.papertrailapp.com',
port: XXXXX
});
app.use(expressWinston.logger({
transports: [winstonPapertrail],
meta: true, // optional: control whether you want to log the meta data about the request (default to true)
msg: "HTTP {{req.method}} {{req.url}}", // optional: customize the default logging message. E.g. "{{res.statusCode}} {{req.method}} {{res.responseTime}}ms {{req.url}}"
expressFormat: true, // Use the default Express/morgan request formatting. Enabling this will override any msg if true. Will only output colors with colorize set to true
colorize: true, // Color the text and status code, using the Express/morgan color palette (text: gray, status: default green, 3XX cyan, 4XX yellow, 5XX red).
ignoreRoute: function (req, res) { return false; } // optional: allows to skip some log messages based on request and/or response
}));
これが誰かが彼らのログを管理するのに役立つことを願っています!
'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
errorLoggerはlogger.traceのラッパーです。しかしロガーのレベルはERRORだからlogger.traceはそのメッセージをloggerのアペンダに記録しません。
修正はerrorLoggerの本体でlogger.traceをlogger.errorに変更することです。