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上

bluejamesbond/Scribe.html

Log4js是nodejs应用程序最stream行的日志库之一。

它支持许多很酷的function:

  1. 彩色控制台日志
  2. replace节点的console.log函数(可选)
  3. 文件appender,根据文件大小进行日志滚动
  4. SMTP,GELF,hook.io,Loggly appender
  5. 多进程appender(当你有工作进程时很有用)
  6. logging器连接/expression服务器
  7. 可configuration的日志消息布局/模式
  8. 针对不同日志类别的不同日志级别(使您的应用程序日志的某些部分为DEBUG,其他部分仅为ERRORS等)

例:

  1. 安装: npm install log4js

  2. 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 } 
  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 

“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

注意到errorLoggerlogger.trace的一个包装。 但是logging器的级别是错误的,所以logger.trace不会将其消息logginglogging器的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/

使用winstonwinston-expresswinston-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理他们的日志!