Node.js探秘(4)--实现一个简单的日志服务器

        看了一些资料,尝试着自己写一个基于node.js的简单的日志服务器。该服务器开启服务,监听某端口,调用时通过URL传递参数作为日志内容,日志服务器获取参数后,将其写入日志文件。

         写入日志文件的主程序log.js如下:

var fs = require('fs');
var buffersize = 30000;

exports.init = function(logfile){
        if(logfile){
                var buffer = new Buffer(buffersize);
                var fd = fs.openSync(logfile,'a');
        }
        function writeLog(type,logmsg){
                var log = {type:type,msg:logmsg,time:getTime()};
                console.log(formatLogMsg(log));
                fs.writeSync(fd,formatLogMsg(log),0,0,null);
        }
        return {
                log: function(type,logmsg){writeLog(type,logmsg)},
        };
}
//格式化日志内容
function formatLogMsg(log){
        return [log.time,log.type,log.msg] + "\n";   
}

function getTime() {
        var t = new Date();
        return [t.getFullYear(), '-', add0(t.getMonth() + 1) , '-', add0(t.getDate()), ' ',
                add0(t.getHours()), ':', add0(t.getMinutes()), ':', add0(t.getSeconds())].join('');
}

function add0(num) {
        return num > 9 ? num : '0' + num;
}
          日志服务器启动程序代码http_log.js如下:

var http = require("http");
var url = require("url");
var log = require('./log');

http.createServer(function(request, response) {
        response.writeHead(200, {"Content-Type": "text/plain"});

        var params = url.parse(request.url, true).query;
        input = params.log;

        logclass = log.init('httplog.log');
        logclass.log('err',input);

        response.write("error has been write into log file!\n");
        response.end();

}).listen(8100);

          node http_log.js运行该脚本,启动日志服务器: 

          

          在另一台机器上输入http://192.168.1.171:8100/?log=user login failed.  就可以将日志信息‘user login failed’记录到日志服务器上了。

          

          很简单,也很方便。我们还可以将其封装成WebService的形式,供其它程序调用。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值