셈플

var express = require("express" );
var http    = require("http"    );
var cluster = require("cluster" );
var os      = require("os"      );

if( cluster.isMaster){
    var cpu = os.cpus().length;

    for(var i=0; i<cpu; i++){
        cluster.fork();
    }

    cluster.on("exit"     , function(worker, code, signal){
        //process가 종료 되었을경우 다시 시작
        console.log("worker : exit #%s %s", worker.id, signal);
        console.log("worker restarting ...");
        cluster.fork();
    });
    cluster.on("online"   , function(worker){
        console.log("worker : online #%s, pid: %d", worker.id, 
                           worker.process.pid);
    });
    cluster.on("listening", function(worker, address){
        console.log("worker : listening %s", worker.id);
        console.log("  address: %s, port: %d", address.address, address.port);
    });
}else{
    var app = express();
    var server = http.createServer(app);

    server.listen(8090, function(){
        console.log("server listening on worker id : #"+cluster.worker.id);
    });    
}

실행결과

worker : online #1, pid: 32577
worker : online #2, pid: 32578
server listening on worker id : #1
worker : listening 1
   address: 0.0.0.0, port: 8090
server listening on worker id : #2
worker : listening 2
   address: 0.0.0.0, port: 8090

참고:

2013/10/22 13:12 2013/10/22 13:12
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

[node.js] traceback

셈플

var traceback = require("traceback");

function start() { first() }
function first() { second() }
var second = function() { last() }

function last() {
  var stack = traceback();
  console.log("I am " + stack[0].name + " from file " + stack[0].file)

  for(var i = 1; i <= 3; i++)
    console.log("  " + i + " above me: " + stack[i].name 
                         + " at line " + stack[i].line+" path "+stack[i].path);
}
start();

실행 결과

[root@redjini source]# ../bin/node test.js
I am last from file test.js
  1 above me: second at line 5 path /data/NodeJS/source/test.js
  2 above me: first at line 4 path /data/NodeJS/source/test.js
  3 above me: start at line 3 path /data/NodeJS/source/test.js

참고 :

2013/10/22 11:53 2013/10/22 11:53
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

[node.js] log4js PatternLayout 사용하기

셈플코드

var log4js = require("log4js");
/**
 * PatternLayout
 * Format for specifiers is %[padding].[truncation][field]{[format]}
 * e.g. %5.10p - left pad the log level by 5 characters, up to a max of 10
 * Fields can be any of:
 *  - %r time in toLocaleTimeString format
 *  - %p log level
 *  - %c log category
 *  - %h hostname
 *  - %m log data
 *  - %d date in various formats
 *  - %% %
 *  - %n newline
 *  - %x{<tokenname>} add dynamic tokens to your log. Tokens are specified in the tokens parameter
 * You can use %[ and %] to define a colored block.
 *
 * Tokens are specified as simple key:value objects. 
 * The key represents the token name whereas the value can be a string or function
 * which is called to extract the value to put in the log message. If token is not
 * found, it doesn't replace the field.
 *
 * A sample token would be: { "pid" : function() { return process.pid; } }
 *
 * Takes a pattern string, array of tokens and returns a layout function.
 * @param {String} Log format pattern String
 * @param {object} map object of different tokens
 * @return {Function}
 * @author Stephan Strittmatter
 * @author Jan Schmidle
 */

log4js.configure({
    appenders:[
        {
            type  : "console", 
            layout: {
                type   : "pattern",
                pattern:"%d %x{pid} %0.1p %c - %m",
                tokens :{ "pid" : function() { return process.pid; } }
            }
        }
    ]
});    
log4js.replaceConsole();

console.log("test %s", "vv");

참고

2013/10/21 20:44 2013/10/21 20:44
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

[node.js] Strict mode

● Strict mode 사용법
    - js 파일 혹은 function 에 명시

js 파일 사용예)

 
//test.js
"use strict";
var v = "test variable";

function 사용예)

 
//test.js
function test(){
    "use strict";
    var result = "test variable";
    return result;
}
 v = test(); // test()내부에 Strict mode를 선언, 오류 발생하지 않음
console.log( v );
 

function 사용예)

//test.js
"use strict";
function test(){
    result = "test variable"; //js파일 상단에 Strict mode를 선언, 오류 발생
    return result;
}
var v = test();
console.log( v );

참고

2013/10/21 19:33 2013/10/21 19:33
태그 : ,
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다