Tag: 日志

logging器不会根据需要保存所有日志信息 – 节点jsasynchronous

我有一个伟大的winstonlogging器: var systemLogger = new (winston.Logger)({ transports: [ new (winston.transports.Console)({ timestamp: function () { return moment().format('D/MM/YYYY HH:mm:ss:SSS') }, colorize: true }), new (require('winston-daily-rotate-file'))({ filename: 'logs/-system.log', datePattern: 'dd-MM-yyyy', prepend: true, json: false, timestamp: function () { return moment().format('D/MM/YYYY HH:mm:ss:SSS') }, formatter: formatter }) ] }) 我在我的程序中调用这个logging器: var systemLogger = require('./logging.js') var asyncTasks = [] asyncTasks.push(function(callback) { […]

追加到一个已经存在的文件nodejs?

我知道如何附加到节点中的文件的问题? 但是那些不做我需要的。 我所拥有的是一个文本文件,在nodejs启动之前已经包含了文本,然后我希望节点在我的文件末尾添加文本。 但是,在上面链接的问题中使用方法会覆盖我的文件的内容。 我还发现我可以在我的fs.createWriteStream的选项中使用start:number ,所以如果我想弄清楚我的旧文件在哪里结束,我可以用它来追加,但是我怎样才能解决这个问题,而不必读出整个文件和计数在其中的字符?

使用分布式数据库为node.js(MongoDB?)进行事件日志logging

我正在寻找node.js的系统或库,可以在每个远程服务器上logging有关客户端访问的信息,并自动将这些信息收集到中央日志服务器上供以后分析。 远程服务器将具有只写访问,而中央服务器将积累大量的数据读取。 我希望有解决scheme使用分布式[NoSQL]数据库,如MongoDB。 但是我还没有find如何设置它。 例如,我希望可以在中央日志服务器上启动清理旧数据(处理数据时),并且可以在远程服务器上删除旧date条目,而且开销不大。 目前我们已经login到文件和Hadoop系统进行日志分析。 但是我认为我们需要在数据库中积累数据。

阅读日志时,JSON从双引号更改为单引号

通过apache日志(下面),我可以parsing出一个JSON: [2014.02.14_21.24.22.543] other info I don't care about json: { "petstore": "store_number_8", "dogs":{ "terrier":{ "total":2 } }, "cat":{ "siamese":{ "total":5 } } } 1)这是有效的JSON? 2)为什么双引号变成单引号? 读完之后,parsing出JSON并显示出来,我得到以下结果: { 'petstore': 'store_number_8', 'dogs':{ 'terrier':{ 'total':2 } }, 'cat':{ 'siamese':{ 'total':5 } } } 顺便说一下,我使用Node.js的fs.createStream来读取日志,然后只是做一个控制台(到目前为止,我没有做任何消毒,最终我会写它到一个文件)。 fs.creatReadStream(logs).pipe(split()).on(data, function(line){ if(line.match(/json\:/)){ shouldThisBeValidJSON = JSON.parse(line.slice(line.indexOf('{'), line.length)); console.log(shouldThisBeValidJSON); } 先谢谢你。

通过Docker上Supervisor的Cron任务查看NodeJS应用程序日志

所以设置是… Docker> Supervisor> Cron> NodeJS任务。 目前我正在让我的主pipe将当前pipe理员设置的日志和错误日志输出到docker。 [program:cron] command=cron -f startsecs=10 priority=100 autostart=true autorestart=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 这显示了正在运行的cron任务,即 app_1 | 'Supervisord is running as root and it is searching ' app_1 | 2016-08-26 12:54:30,519 CRIT Supervisor running as root (no user in config file) app_1 | 2016-08-26 12:54:30,519 WARN Included extra file "/etc/supervisor/conf.d/supervisord.conf" during parsing […]

我在哪里可以find常见Node.js模块的发行说明/更新日志

我可能错过了简单的东西,但我似乎无法find最新版本的常用节点模块中发生了什么变化。 快递,连接,触控笔等… 我意识到这是由维护人员写更新日志,而不是每个人都这样做。 我仔细看了一下提交,但通常不会帮助太多,因为除非明显,否则我不太熟悉给定的代码行。 如果有一个列表(通常是简短的),那么这些变化对于我来说是相对简单的语言中的代码的消费者。 像这样: http : //aws.amazon.com/releasenotes/2817276026948755 我是否错过了某些东西,或者大部分模块没有得到这些东西(大概是因为人们很忙,我应该罚款时间钻研源代码)?

在使用opsworks使用nodejs时,从console.XXX输出的地方会logging在哪里?

我是AWS Opsworks新手 。 我已经成功部署了一个早期通过弹性beanstalk部署的应用程序。 该应用程序正在运行,但我无法find任何文件的console.log输出被保存。 我已经用.log扩展名grepped所有文件,但无法find输出。 谢谢。

无法将日志保存到winston-nodejs的mongodb数据库

我正在使用winston库: https : //github.com/flatiron/winston尝试将数据存储到mongodb数据库: https : //github.com/indexzero/winston-mongodb 插入我使用的数据: var MongoDB = require('winston-mongodb').MongoDB; var logger = new (winston.Logger)({ transports: [ new (winston.transports.Console)(), new (winston.transports.MongoDB)({ host: ip, db: 'caribcultivate', collection: 'log', level: 'info'}) ], exceptionHandlers: [ new winston.transports.Console() ] }); logger.log('info', "Running logs "+ d); logger.info("Drive: "+ (new Date(d)).toDateString()); 但是,当我尝试查询数据使用: winston.query(options, function (err, results) { if (err) […]

温斯顿的日志stream如何工作?

Winston文档有一个关于stream式日志的部分,它说: stream式传输允许您从您select的传输中将日志stream式传回。 并给出以下代码示例: // // Start at the end. // winston.stream({ start: -1 }).on('log', function(log) { console.log(log); }); 我读到这一点是,每个新的日志消息添加将被输出到控制台。 {start: -1}configuration指示stream在文件结尾处开始,因此只有新的日志条目被输出。 我期望下面的Node脚本会导致test.log文件的每一行都输出到控制台,然后每隔500ms输出一个新的对象。 var winston = require('winston'); winston.add(winston.transports.File, { filename: 'test.log' }); winston.remove(winston.transports.Console); winston.stream().on('log', function(log) { console.log(log); }); setInterval(function(){ winston.log('info', 'help'); }, 500); 我希望看到像下面的输出: {"level":"info","message":"help","timestamp":"2013-12-10T05:55:15.806Z"} {"level":"info","message":"help","timestamp":"2013-12-10T05:55:16.307Z"} {"level":"info","message":"help","timestamp":"2013-12-10T05:55:16.809Z"} {"level":"info","message":"help","timestamp":"2013-12-10T05:55:17.309Z"} {"level":"info","message":"help","timestamp":"2013-12-10T05:56:48.316Z"} 实际上发生的事情是,日志工作与File传输一样(该文件每500毫秒获取一个新的日志条目),但没有输出到控制台。 console.log(log)行永远不会被调用。 我错过了一些明显的东西,或者误解了Winston的日志stream的目的?

永远的日志和logrotate

我永远使用启动我的nodeJs服务器,我select日志文件: 永远-l /home/api/log/api_output.log启动server.js 我使用logrotate每天移动日志文件(比如build议这里: NodeJS / Forever归档日志 ),有一天我的目录是这样的: -rw-r – r– 1 root root 0 avril 18 12:00 api_output.log -rw-r – r – 1 root root 95492 avril 18 12:01 api_output.log-20140418 所以,轮换正在工作,但日志消息现在写入api_output.log-20140418,而不是api_output.log 也许有人可以帮助我?