Node.jslogging
有什么库可以帮助我处理Node.Js应用程序中的日志logging吗? 所有我想要做的是,我想写所有日志到一个文件,也需要一个选项,如推出一定的大小或date后的文件。
我已经合并log4js即时通讯尝试保留所有configuration的详细信息在一个文件中,只使用其他应用程序文件中的方法,以方便维护。 但它没有按预期工作。 这是我想要做的
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');
Scribe.JS轻量级logging器
我已经浏览了很多logging器,但是我找不到一个轻量级的解决scheme – 所以我决定做一个简单的解决scheme,发布在github上。
- 保存按用户,date和级别组织的文件
- 给你一个漂亮的输出(我们都喜欢)
- 易于使用的HTML界面
我希望这能够帮到你。
在线演示
http://bluejamesbond.github.io/Scribe.js/
保护对日志的Web访问
打印漂亮的文字到控制台太!
Web访问
Github上
Log4js是nodejs应用程序最stream行的日志库之一。
它支持许多很酷的function:
- 彩色控制台日志
- replace节点的console.log函数(可选)
- 文件appender,根据文件大小进行日志滚动
- SMTP,GELF,hook.io,Loggly appender
- 多进程appender(当你有工作进程时很有用)
- logging器连接/expression服务器
- 可configuration的日志消息布局/模式
- 针对不同日志类别的不同日志级别(使您的应用程序日志的某些部分为DEBUG,其他部分仅为ERRORS等)
例:
-
安装:
npm install log4js
-
configuration(
./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中推荐的issac使用npmlog。;
你可以在这里find这个模块https://github.com/isaacs/npmlog
“logger.setLevel('ERROR');” 正在造成这个问题。 我不明白为什么,但是当我将其设置为“ALL”以外的任何内容时,都不会在文件中打印出来。 我捅了一下,修改了你的代码。 它对我来说工作得很好。 我创build了两个文件。
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中。
“nodejslogger”模块可以用于简单的日志logging。 它有三个级别的日志logging(INFO,ERROR,DEBUG)
var logger = require('nodejslogger') logger.init({"file":"output-file", "mode":"DIE"})
D:debugging,我:信息,E:错误
logger.debug("Debug logs") logger.info("Info logs") logger.error("Error logs")
该模块可通过以下url访问: https : //www.npmjs.com/package/nodejslogger
注意到errorLogger是logger.trace的一个包装。 但是logging器的级别是错误的,所以logger.trace不会将其消息logging到logging器的appender。
解决的办法是将logger.trace更改为errorLogger主体中的logger.error 。
温斯顿是大多数开发人员的强有力的select。 我一直在使用温斯顿。 最近我用winston和papertrail把应用程序logging到下一个级别。
这是从他们的网站一个不错的截图。
如何有用
-
您可以在一个地方pipe理来自不同系统的日志。 这可以是非常有用的,当你有两个后台进行通信,并可以在两个地方看到日志。
-
日志是活的。 你可以看到你的生产服务器的实时日志。
-
强大的search和filter
-
如果遇到日志中的特定文本,您可以创build警报向您发送电子邮件。
你可以find更多http://help.papertrailapp.com/kb/how-it-works/event-viewer/
使用winston
, winston-express
和winston-papertrail
节点模块的简单configuration。
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. Eg "{{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 }));
我希望这可以帮助别人pipe理他们的日志!