首页 > Web开发 > 详细

NodeJS web 实践 - logging

时间:2014-02-23 03:27:54      阅读:523      评论:0      收藏:0      [点我收藏+]

nodejs的module非常多,可用于log的组建也很多,现在介绍一下对log4js的实践。

https://github.com/nomiddlename/log4js-node

假设已经安装了nodejs,express, npm

(1) create a new express project 

?  ~/tmp  express -e catchy

   create : catchy
   create : catchy/package.json
   create : catchy/app.js
   create : catchy/public
   create : catchy/public/images
   create : catchy/public/javascripts
   create : catchy/routes
   create : catchy/routes/index.js
   create : catchy/routes/user.js
   create : catchy/public/stylesheets
   create : catchy/public/stylesheets/style.css
   create : catchy/views
   create : catchy/views/index.ejs

   install dependencies:
     $ cd catchy && npm install

   run the app:
     $ node app

(2) install log4js

? catchy npm install log4js -save

? catchy npm install


(2) write an utility 

?  catchy  touch logUtil.js

/* LogUtil.js */

/**
 * Logger definition
 */

var log4js = require(‘log4js‘);
var levels = ["INFO","DEBUG","ERROR"]
var level = "INFO";
var events = require(‘events‘)
var dynamicLogging = new events.EventEmitter()
var u = require("util")

dynamicLogging.setMaxListeners(50)

log4js.configure(‘logs/log4js.json‘, {
			reloadSecs : 180 } )
exports.getLogger = function(name) {

	var logger = log4js.getLogger(name);logger.setLevel(level); 
	dynamicLogging.on("levelChange",function(newLevel){ console.log(u.format("logger %s -- > Level : %s ", name, newLevel)) 
		logger.setLevel(newLevel) })
	return logger;};
var hasLevel = function(levelName){ var i for(i=0; i<levels.length;i++){ if (levelName === levels[i]) { return true } } return false}
var getLevel = function(){ return level}
var resetLevel = function(){ dynamicLogging.emit("levelChange", getLevel())}
var setLevel = function(_level) {level = _level;};
exports.log4js = log4js;
exports.setLevel = setLevel
exports.hasLevel = hasLevel
exports.getLevel = getLevel
exports.resetLevel = resetLevel


(3) make configurations and log dir 

mkdir logs 
touch logs/log4js.json

log4js.json

{
    "appenders": [
        {
            "type": "console"
        },
        {
            "type": "file",
            "filename": "logs/default.log",
            "maxLogSize": 204800,
            "backups": 5
        }
    ]
}
(4) get logger

var logUtil = require("./logUtil")

var logger = logUtil.getLogger("xx")
logger.info("foo")
logger.debug("foo")
logger.error("what?")

note:

将log4js做了一点优化: 利用nodejs的事件机制,动态的调整loglevel,无需重启应用。



NodeJS web 实践 - logging

原文:http://blog.csdn.net/samurais/article/details/19675709

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!