【问题标题】:How to create a new log every each day如何每天创建一个新日志
【发布时间】:2016-09-28 01:48:00
【问题描述】:

我是 node.js 的新手,想每天创建新的日志/调试文件以在其中打印 console.log 值,因为如果有一个文件,它会变得很大并且也无法正常查看。

请给我建议我该怎么做?

任何正在运行的示例都会感谢我。

【问题讨论】:

  • 您是手动创建日志文件还是使用一些 npm 包?你能把你正在执行的代码吗?如果我们知道您在做什么,将很容易提供帮助。
  • 使用logrotatePM2,Node 中的进程管理器也有助于日志轮换。
  • var log_file = fs.createWriteStream('./debug' + timeStamp + '.log', { flags: 'w' }); console.log = function(d) { // var dt = new Date(); var utcDate = dt.toUTCString(); log_file.write(utcDate + " : " + util.format(d) + '\n'); };
  • 我按照上面的代码做...

标签: javascript node.js


【解决方案1】:

任何程序的此类元素都称为“记录器”。 Logger 可以轻松处理您的日志文件。

有很多用于记录服务器的实现

您可以在 npmgithub 甚至在 Google 中找到任何记录器;)

例如,npm install winston

https://github.com/winstonjs/winston

  var winston = require('winston');

  winston.log('info', 'Hello distributed log files!');
  winston.info('Hello again distributed logs');

  winston.level = 'debug';
  winston.log('debug', 'Now my debug messages are written to console!');

【讨论】:

    【解决方案2】:

    我建议根据日志文件的大小来轮换日志,使用大小可以如下所示。

    您可以为此使用logrotate-stream

    1. 使用npm install -g logrotate-stream全局安装

    2. 使用node app.js 2>&1 | logrotate-stream app.log --keep 5 --size '1m' --compress运行您的服务器

    说明

    2>&1 将标准错误发送到标准输出 (detail about 2>&1)

    | 管道输出(此处为 stderr 和 stdout)到下一个命令作为输入(此处为 logrotate-stream

    app.log日志文件名

    --keep 5要保留的最大文件数

    --size 1m 每个文件的最大大小,单位 mb --compmress压缩文件

    日志文件如下所示

    app.log
    app.log.0.gz
    app.log.1.gz
    app.log.2.gz
    app.log.3.gz
    app.log.4.gz
    

    【讨论】:

    • 谢谢,但仍然无法为每一天创建日志文件。
    • 感谢大家,但我通过另一种方式找到了它并且它工作正常。
    • /*test1.js*/ var fs = require('fs'); var logs = require('tracer').colorConsole({ format : "{{timestamp}} : {{message}} ==>> (in {{file}}:{{line} })", dateformat : "yyyy_mm_dd_hh:MM:ss TT", 传输: function(log) { console.log(log.output); var timestamp = log.timestamp.substring(0,10); fs.open(' ./debug.' + 时间戳 + '.log', 'a', function(err, fileId) { fs.write(fileId, log.output + "\n", null, 'utf8', function() { fs .close(fileId, function() { }); }); }); } }); module.exports = 日志;
    • /*test2.js*/ var logger = require('./loggerFile.js'); setInterval(function() { test(); }, 2 * 60 * 1000); function test(){ logger.debug("内部测试函数"); logger.info("在if条件内"); logger.error("这不是错误。"); }
    猜你喜欢
    • 2011-02-23
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 2014-11-09
    相关资源
    最近更新 更多