Node.js记录

syv*_*syv 174 logging libraries node.js

是否有任何库可以帮助我处理Node.Js应用程序中的日志记录?我想要做的就是,我想将所有日志写入文件,我还需要一些选项,比如在特定大小或日期后推出文件.


我已经整合了log4js,试图将所有配置细节保存在一个文件中,并仅使用其他应用程序文件中的方法以便于维护.但它没有按预期工作.这就是我想要做的

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;
Run Code Online (Sandbox Code Playgroud)

我已将此文件包含在其他文件中并尝试过

log.error ("Hello Error Message");
Run Code Online (Sandbox Code Playgroud)

但它没有用.这有什么不对吗?

小智 193

温斯顿是一个非常好的日志库.您可以使用它将日志写入文件.

代码看起来像:

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;
Run Code Online (Sandbox Code Playgroud)

然后你可以使用它:

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

logger.info('log to file');
Run Code Online (Sandbox Code Playgroud)

  • @everyone,似乎winston再次被维护... https://github.com/flatiron/winston/network (8认同)
  • @TravisWebb - https://github.com/flatiron/winston/issues/294 & https://github.com/flatiron/winston/issues/280 (5认同)
  • 我已经使用了winston很长一段时间了.它已经变得越来越多,我已经抛弃了它而支持npmlog. (3认同)

Mat*_*ian 59

Scribe.JS轻量级记录器

我查看了很多记录器,但我找不到轻量级的解决方案 - 所以我决定制作一个发布在github上的简单解决方案.

  • 保存按用户,日期和级别组织的文件
  • 给你一个漂亮的输出(我们都喜欢)
  • 易于使用的HTML界面

我希望这能够帮到你.

在线演示

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

安全的Web访问日志

一个

向控制台打印漂亮的文本!

一个

Web访问

一个

Github上

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

  • 不再维护此库:https://github.com/bluejamesbond/Scribe.js#library-is-no-longer-maintained (5认同)

Tho*_*Tho 30

Log4js是nodejs应用程序最流行的日志库之一.

它支持许多很酷的功能:

  1. 彩色控制台记录
  2. 替换节点的console.log函数(可选)
  3. 文件追加器,根据文件大小滚动日志
  4. SMTP,GELF,hook.io,Loggly appender
  5. 多进程appender(当你有工作进程时很有用)
  6. 连接/快速服务器的记录器
  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 }
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)


sam*_*rav 11

您还可以使用https://npmjs.org/doc/coding-style.html中推荐的issacs的npmlog .

你可以在这里找到这个模块 https://github.com/isaacs/npmlog


Ale*_*raj 6

"logger.setLevel('ERROR');" 造成了这个问题.我不明白为什么,但当我将它设置为"ALL"以外的任何内容时,文件中不会打印任何内容.我捅了一下并修改了你的代码.它对我来说很好.我创建了两个文件.

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();
Run Code Online (Sandbox Code Playgroud)

logger.test.js

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

var log = logger.logger;

log.error("ERROR message");
log.trace("TRACE message");
Run Code Online (Sandbox Code Playgroud)

当我运行"node logger.test.js"时,我在test.log文件中只看到"ERROR message".如果我将级别更改为"TRACE",则两行都打印在test.log上.

  • https://logging.apache.org/log4j/1.2/manual.html可以为记录器分配级别.可能的级别集合,即:TRACE,DEBUG,INFO,WARN,ERROR和FATAL如果日志记录请求的级别高于或等于其记录器的级别,则称其已启用.否则,该请求被称为禁用. (2认同)