Interesting comment, surely asynchronously writing to a file isn't going to have much of an impact...? Are there any examples around of what kind of an effect it could have...?
D On 12 May 2014 18:33, "hij1nx" <pa...@async.ly> wrote: > Yeah, but don't log to disk if you care about performance, > which I'm guessing you do since you're using cluster :) > > Here's why -- https://medium.com/node-js-javascript/37a93d4e0013. > You may also want to look at this -- https://github.com/hij1nx/net-log > > -- > https://twitter.com/hij1nx > https://github.com/hij1nx > > On Tuesday, April 29, 2014 7:31:38 AM UTC-4, Alexey Petrushin wrote: >> >> Adam Wiggins, one of creator of Heroky wrote interested post about >> logging, you may find it interesting >> http://adam.heroku.com/past/2011/4/1/logs_are_streams_not_files/ >> >> On Monday, 28 April 2014 14:48:46 UTC+4, Jose Luis Rivas wrote: >>> >>> I would suggest you to not write directly but redirect output to a file. >>> >>> node app.js > file.log >>> >>> keep it simple. >>> >>> On 4/28/14, 5:45 AM, gen chen wrote: >>> > I am now working on a node.js project based on cluster. I got stuck >>> on >>> > the logging. After doing some research, I worked out a solution. here >>> > is it. i don't know if it is a good idea. The idea is like this. >>> only >>> > master process can wirte to the log file, if the current process is a >>> > worker, then it send a log message to the master and then write to the >>> > log file while the master can directly write to the log file. this can >>> > avoid multiple process open and write to a same file. >>> > >>> > var util = require('util'); >>> > var fs = require('fs'); >>> > var cluster = require('cluster'); >>> > >>> > var logger = module.exports; >>> > >>> > var levels = ['debug', 'info', 'warn', 'error', 'fatal']; >>> > var logLevel = 'debug'; >>> > >>> > var logfile = null; >>> > var errorLogfile = null; >>> > >>> > >>> > if(cluster.isMaster){ >>> > >>> > logfile = fs.createWriteStream('debug.log', {flags:'a'}); >>> > errorLogfile = fs.createWriteStream('error.log', {flags:'a'}); >>> > >>> > cluster.on('online', function(worker){ >>> > //collect log message from child and write to logfile. >>> > worker.on('message', function(msg){ >>> > if(msg.type == 'logging') { >>> > var level = msg.data.level; >>> > var logStr = msg.data.msg; >>> > if(levels.indexOf(level) >= levels.indexOf('error')){ >>> > errorLogfile.write(logStr + '\n'); >>> > }else{ >>> > logfile.write(logStr + '\n'); >>> > } >>> > } >>> > }); >>> > }); >>> > } >>> > >>> > >>> > function log(level, args){ >>> > >>> > if(levels.indexOf(level) < levels.indexOf(logLevel)) return; >>> > >>> > var args = Array.prototype.slice.call(args); >>> > >>> > args = args.map(function(a){ >>> > if(typeof a !== 'string') >>> > return JSON.stringify(a); >>> > else return a; >>> > }); >>> > var msg = util.format.apply(null, args); >>> > >>> > var out = []; >>> > out.push(new Date()); >>> > out.push('[' + level.toUpperCase() + ']'); >>> > out.push(msg); >>> > >>> > >>> > if(cluster.isMaster){ >>> > >>> > //write directly to the log file >>> > if(levels.indexOf(level) >= levels.indexOf('error')){ >>> > errorLogfile.write(out.join(' ') + '\n'); >>> > }else{ >>> > logfile.write(out.join(' ') + '\n'); >>> > } >>> > >>> > }else{ >>> > >>> > //send to master >>> > cluster.worker.process.send({ >>> > type : 'logging', >>> > data : { >>> > level : level, >>> > msg : out.join(' ') >>> > } >>> > }); >>> > } >>> > >>> > } >>> > >>> > >>> > logger.debug = function(){log('debug', arguments);} >>> > logger.info = function(){log('info', arguments);} >>> > logger.warn = function(){log('warn', arguments);} >>> > logger.error = function(){log('error', arguments);} >>> > logger.fatal = function(){log('fatal', arguments);} >>> > >>> > >>> > >>> > -- >>> > -- >>> > Job Board: http://jobs.nodejs.org/ >>> > Posting guidelines: >>> > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >>> > You received this message because you are subscribed to the Google >>> > Groups "nodejs" group. >>> > To post to this group, send email to nod...@googlegroups.com >>> > To unsubscribe from this group, send email to >>> > nodejs+un...@googlegroups.com >>> > For more options, visit this group at >>> > http://groups.google.com/group/nodejs?hl=en?hl=en >>> > >>> > --- >>> > You received this message because you are subscribed to the Google >>> > Groups "nodejs" group. >>> > To unsubscribe from this group and stop receiving emails from it, send >>> > an email to nodejs+un...@googlegroups.com >>> > <mailto:nodejs+un...@googlegroups.com>. >>> > For more options, visit https://groups.google.com/d/optout. >>> >>> -- >>> Jose Luis Rivas - http://joseluisrivas.net >>> Venezuela - GPG: 0xB9AC8C43 >>> >> -- > Job board: http://jobs.nodejs.org/ > New group rules: > https://gist.github.com/othiym23/9886289#file-moderation-policy-md > Old group rules: > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines > --- > You received this message because you are subscribed to the Google Groups > "nodejs" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to nodejs+unsubscr...@googlegroups.com. > To post to this group, send email to nodejs@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/nodejs/01359a4a-ef2d-46b4-ae0d-f3505ac32f98%40googlegroups.com<https://groups.google.com/d/msgid/nodejs/01359a4a-ef2d-46b4-ae0d-f3505ac32f98%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- Job board: http://jobs.nodejs.org/ New group rules: https://gist.github.com/othiym23/9886289#file-moderation-policy-md Old group rules: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to nodejs+unsubscr...@googlegroups.com. To post to this group, send email to nodejs@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/nodejs/CACTUpAccoCMAAK-Zj7FE7c8h8mivWqjcuVKGNhSnrDLdHp-BMw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.