日志记录

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


我合并了 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");

但是没有用,有什么问题吗?

172841 次浏览

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

“ logger.setLevel (‘ ERROR’) ;”导致了这个问题。我不明白为什么,但是当我设置它为“所有”以外的任何东西,没有打印在文件中。我查了一下,修改了你的代码。我觉得挺好的。我创建了两个文件。

伐木工

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 上。

JS 轻量级日志记录器

我查看了许多日志记录器,但是没有找到一个轻量级的解决方案——所以我决定制作一个发布在 github 上的简单解决方案。

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

希望这能帮到你。

在线演示

Http://bluejamesbond.github.io/scribe.js/

安全访问日志

A

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

A

上网

A

Github

Https://github.com/bluejamesbond/scribe.js

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

它支持很多很酷的功能:

  1. 彩色控制台日志
  2. 替换节点的 console.log 函数(可选)
  3. 文件附加程序,根据文件大小进行日志滚动
  4. SMTP,GELF,hook.io,Loggly appender
  5. 多进程 appender (有辅助进程时很有用)
  6. 用于连接/表示服务器的日志记录器
  7. 可配置的日志消息布局/模式
  8. 不同日志类别的不同日志级别(制作部分 你的应用程序日志的 DEBUG,其他人只有错误,等等。)

例如:

  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. Usage:

    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 Trace的包装器。但是日志记录器的级别是 错误,所以 Logger Trace不会将其消息记录到 伐木工的附加程序。

解决办法是在 错误记录器的主体中将 Logger Trace改为 记录器,错误

可以使用一个“ nodejlogger”模块进行简单的日志记录,它有三个级别的日志记录(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

温斯顿是大多数开发商的强有力的选择。我利用 Winston 很久了。最近,我使用文件与文件跟踪温斯顿,使应用程序记录到下一个水平。

这里是他们网站的一个不错的截图。

enter image description here

有什么用

  • 您可以在一个地方管理来自不同系统的日志。当您有两个后端通信并且可以在任何位置查看来自两个后端的日志时,这将非常有用。

  • 日志是实时的。您可以看到生产服务器的实时日志。

  • 强大的搜索和过滤功能

  • 如果在日志中遇到特定的文本,您可以创建通知来发送电子邮件。

你可以找到更多的 http://help.papertrailapp.com/kb/how-it-works/event-viewer/

使用 winstonwinston-expresswinston-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
}));

每个答案都是56年前的,所以有点过时或者贬值了。我们到2020年再说吧。

Simple-node-logger 是用于控制台、文件和滚动文件附加程序的简单多级日志记录器:

  1. 级别: 跟踪、调试、信息、警告、错误和致命级别(加上全部和关闭)

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

附加提示: 它可以将日志发送到控制台或套接字。您也可以附加到日志级别。

这是处理日志功能的最有效和最简单的方法。

下面是用于使用 全堆栈跟踪全堆栈跟踪记录数据的轻量级模块

@ grdon/logger

 const logger = require('@grdon/logger')({
defaultLogDirectory : __dirname + "/logs",
})
// ...
logger(someParams, 'logfile.txt')
logger(anotherParams, 'anotherLogFile.log')