Tag: logging

在Log4js中禁用控制台打印

我只在我的Node.js应用程序中使用Log4js启用日志logging。 我已经使用从https://github.com/nomiddlename/log4js-nodeconfiguration选项,它工作正常。 它将日志写入日志文件以及控制台中。 我不希望这个被打印在控制台中。 无法弄清楚如何configuration这个。 非常抱歉问这个愚蠢的问题。

在永远的JSconfiguration文件中指定日志选项

github的forever.js自述状态 除了永远传递脚本的path(以及上面描述的附带选项)之外,您还可以永远传递包含这些选项的JSON文件的path。 例如,考虑具有以下文件结构的应用程序: 在以下示例中,设置了选项uid , append , watch , script和sourceDir 。 所有这些都是forever命令的参数的长版本(短版本是-a , -w , -s )。 我的问题是:一些选项forever不会有一个长版本,例如-m , -l , -e , -o 。 我如何在我的jsonconfiguration文件中提供这些选项? 我已经尝试添加值,如"l"和"log" ,但这并没有达到预期的效果。

温斯顿日志文件不能正常工作

我使用Winston进行日志logging: var winston = require('winston'); var logger = new(winston.Logger)({ transports: [ new(winston.transports.Console)(), new(winston.transports.File)({filename: '/var/log/logF.log'}) ] }); 我写这个日志: logger.log("File: " + path + " was found"); 出于某种原因,文件/var/log/logF.log不更新,并且标准输出不显示日志。 我如何使用它,所以日志将被写入'/var/log/logF.log'?

会logging要求个别良好的做法或混乱?

我正在开发一个API,它会进行大量的调用,其中一些需要由于各种原因被彻底logging。 现在,我logging了在函数中发生的所有input/输出/处理,并且API完美地工作,所以似乎没有必要增加日志logging的数量。 但是,一个想法是我的头脑后面的一个想法是分配一个UUID到每个传入的API调用,这将遵循logging在内部function。 虽然它会创build相当数量的追加参数来跟踪每个函数中的UUID,但是我想知道这是否是常见的做法,并且如果在需要出现之前应该执行它,并且要做的更改的数量是可pipe理的。 例如: 显然,真正的代码要复杂得多,并且不使用console.log进行日志logging const express = require('express'), fs = require('fs'), config = require('./config.json'), app = express(); function foo(bar, callback) { console.log(bar); fs.open(bar, (err, data) => { if(err) { console.err(err); callback(err); } else { console.log(data) callback(null, data); } }); } app.get('/foo', (req, res) => { console.log(req.body); foo(req.body.bar, (err, result) => { if(err) { […]

如何插入socket.io的内置日志logging系统来生成我自己的消息?

socket.io似乎有一个基本上合理的日志系统的所有内部。 我该如何获得这个日志logging对象,以便我可以在适当的级别上生成我自己的日志消息? 它错误地告诉我,我的console.log()消息在socket.io消息旁边没有被时间戳,未被定级和丑陋。 我已经在socket.io代码中做了大量的开发工作,并且我还没有足够的关于节点的知识来了解对象层次结构是如何知道如何从我的代码中获取对象的。 从长远来看,我可能会想要一个更强大的日志logging系统模块(能够login到文件,自动旋转,基于每个模块pipe理级别,自定义日志级别等)。 温斯顿看起来很明智,但是我也可以使用socket.io来使用它吗? 把所有东西都放在一个地方很好。

将stdoutredirect到文件nodejs

我创造了: var access = fs.createWriteStream('/var/log/node/api.access.log', { flags: 'w' }); 然后pipe道: process.stdout.pipe(access); 然后尝试: console.log("test"); 并没有出现在/var/log/node/api.access.log。 但是,这种方式正在工作: process.stdout.pipe(access).write('test'); 有人可以解释我做错了什么?

在pm2下自定义日志logging

我有一些有用的日志logging在我写给console.log节点应用程序中 node server.js >> /var/log/nodeserver.log 2>&1 但是,当在pm2下尝试相同的时候: pm2 start server.js >> /var/log/pm2server.log 2>&1 日志文件只显示pm2的启动信息 是应用程序日志尽可能与pm2 ? 在他们的页面上,他们讨论日志logging,并用"log message from echo.js"等文本显示图像,但是我没有看到将定制信息导入pm2日志 。

如何通过Express中的中间件链来识别请求(通过ID)。

我正在开发node.js中的RESTful服务器,使用Express作为框架,目前Winston作为logging器模块。 这个服务器将处理大量的同时请求,并且使用诸如“请求ID”之类的东西来跟踪每个特定请求的日志条目对我来说是非常有用的。 直接的解决scheme就是在每次我想创build一个日志条目时添加这个ID作为另一条日志信息,但是这意味着将“请求ID”传递给服务器使用的每个方法。 我想知道是否有任何node.js / javascript模块或技术,可以让我这样做一个更简单的方式,而不是携带每个特定请求的请求ID。

除了第一天以外,如何每天使用Winston旋转日志

我需要每天轮换日志,除了当天的文件。 我正在使用winston和winston-daily-rotate-file库。 在下面的例子中,我第一次执行节点时会生成一个文件“info.log.2016-08-09”。 但是,我真的需要生成文件“info.log”,在这一天之后,应该重命名为“info.log.2016-08-09”,并为当天创build一个新的“info.log”。 我明白,这是其他应用程序的正常行为。 var logger = new (winston.Logger)({ transports: [ new dailyRotateFile( { name: 'cronInfo', filename: path.join(__dirname,"log", "info.log"), level: 'info', timestamp: function(){ return utils.formatDate(new Date(), "yyyy-mm-dd'T'HH:MM:ss.l'Z'") }, formatter: function(options) { return options.timestamp() +' ['+ options.level.toUpperCase() +'] '+ (undefined !== options.message ? options.message : '') + (options.meta && Object.keys(options.meta).length ? '\n\t'+ JSON.stringify(options.meta) : '' […]

NodeJS Express – 全球唯一的请求ID

是否可以定义每个日志语句中包含的唯一请求标识,而无需将logging器交给每个方法/函数调用? 使用中的技术:NodeJS,Express,Winston