Articles of logging

禁用永久运行的node.js脚本中的日志logging

我一直在使用nodejs持续运行几个服务器脚本(在不同的端口上)。 在这些服务器上有相当多的stream量。 我用于跟踪连接exception的console.log命令会导致臃肿的日志文件,我不需要所有的时间 – 仅用于debugging。 我一直在深夜手动停止脚本,截断文件,并重新启动它们。 这不会长期,所以我们决定find一个解决scheme。 我的系统上的其他人删除了我不知道的每个服务器设置的日志文件。 在命令行上永远调用列表显示服务器脚本仍在运行,但是现在我无法查看日志文件以查看节点是如何执行的。 节点停机时间应该保持在最低限度,所以我很犹豫在白天停止服务器的时间超过几分钟。 从客户端的初始testing似乎表明,脚本做的很好,但我不能100%确定没有错误,因为login到一个不存在的文件尝试失败 。 其实我有几个问题: 永久保持这样的状态可以吗? 如果没有,是否有正确的方法来禁用日志logging? github资源库似乎表明,永远仍然会login到一个默认文件,我不想要。 否则,我可能只写一个定期停止脚本的cronjob,截断日志,然后重新启动脚本。 如果我只是在脚本仍在运行的情况下触摸logfile_name.log ,再次创build日志文件,会发生什么情况 – 这是否会永远令人惊讶或者这是一个合理的解决scheme? 谢谢你的时间。

Node.js / winston – 我可以追加日志吗?

我使用winston.log来追加日志文件。 每次我重新启动我的应用程序,存在的日志被删除,并创build一个新的。 有什么办法来追加日志文件? 所以它会删除只是在旋转规则? 这是相关的代码: var winston = require('winston'); var loggerNoCache = new(winston.Logger)({ transports: [ new(winston.transports.File)({ filename: '/var/log/logNo.log', options: { highWaterMark: 32 } }) ] });

温斯顿爵士。 超过最大大小后,我的日志文件不旋转

我有以下winstonconfiguration: 'use strict' import winston from 'winston' import config from '../../config/environment' export default winston.createLogger({ level: 'info', format: winston.format.printf(info => info.message), transports: [ new winston.transports.Console(), new winston.transports.File({ filename: `${config.logsPath}/express.error.log`, maxsize: 300, level: 'error' }), new winston.transports.File({ filename: `${config.logsPath}/express.log`, maxsize: 300 })] }) 达到300字节的阈值后,这些文件都不会旋转。

如何在bunyan中设置'short'输出模式默认情况下

在bunyan的常规(原始)日志看起来如下: $ node myapp.js {"name":"myapp","hostname":"myhost","pid":34572,"level":30,"msg":"start","time":"2013-01-04T07:47:25.814Z","v":0} {"name":"myapp","hostname":"myhost","pid":34572,"widget_type":"wuzzle","level":30,"msg":"creating a wuzzle","time":"2013-01-04T07:47:25.815Z","v":0} 可以使用“短”输出模式,使用CLI,通过pipe道日志bunyan -o short $ node myapp.js | bunyan -o short 07:46:42.707Z INFO myapp: start 07:46:42.709Z INFO myapp: creating a wuzzle (widget_type=wuzzle) 是否有可能默认使用“短”模式,所以node myapp.js会产生短版本的日志?

nodejs并通过不同的模块进行日志logging

我只是对以下最好的方法感兴趣… 我有一个应用程序分为几个模块出于维护原因和问题分离。 我希望能够创build一个日志文件,当我的应用程序启动,然后使用我写的不同模块写入相同的日志文件,而不会变得凌乱,并在我的导出模块中有不必要的代码。 提前致谢。

bunyan log.child正确的用例?

我一直在看bunyanlogin我的nodejs应用程序。 我试了一下,似乎一切工作都很好。 我已经跳过了一个关于log.child 的部分 ,但现在我正在尝试了解如何使用它。 我认为这样做的目的是让我为日志条目指定一些特殊的标识符,以便我可以唯一地标识该日志如何与其他日志条目相关联。 如果是这样的话,我会设想自己在每个请求中使用log.child : var bunyan = require('bunyan'); var log = bunyan.createLogger({name: 'myapp'}); router.post('/submit', function(req, res) { var logChild = log.child({reqId: uuid.v4()}); logChild.info({ req:req }, req.user.name + ' has called /submit'); saveData(req) .then(function(data) { logChild.info({data: data}, req.user.name + ' has saved to DB successfully in /submit'); res.json({'success': 'Saved!'}); }) .error(function(err) { […]

如何logging在winston的JavaScript对象和数组作为console.log呢?

我正在查看顶级的节点日志logging系统: npmlog , log4js , bunyan和winston并决定使用winston的npm月度下载量最多。 我想要设置的是自定义logging器,我将可以在开发环境上使用logger.debug(…) ,它不会在生产环境中logging任何东西。 当我在开发环境中时,这将有助于我,因为我将看到所有的输出,所以我不需要写任何东西。 这是我现在所拥有的: var level = 'debug'; if (process.env.NODE_ENV !== 'development'){ level = 'production'; // this will never be logged! } var logger = new winston.Logger({ transports: [ // some other loggings new winston.transports.Console({ name: 'debug-console', level: level, prettyPrint: true, handleExceptions: true, json: false, colorize: true }) ], […]

在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'?