node.js HTTPサーバでApacheライクなログを記録する

提供: Node.js/JavaScript入門
移動: 案内検索
スポンサーリンク

node.jsのHTTPサーバ(ウェブサーバ)は、httpモジュール/foreverなどで簡単に作成できます。ただし、httpだけでは、アクセスログが記録されません。apache-logと呼ばれるモジュールを利用するとApacheライクなログを出力できます。

読み方

apache-log
あぱっち ろぐ

概要

apache-log は、デフォルトでは、 /var/log/access.log にアクセスログを記録します。

apache-log

node.jsのapache-logモジュールは、node.jsのためのApacheのCLF(Common Log Format)でアクセスをロギングするためのミドルウェアです。

インストール

$ sudo npm install -g apache-log

apache-logを使用したロギング

ソースコード http_apache-log1.js

/*
 * http_apache-log1.js
 * Copyright (C) 2014 kaoru <kaoru@bsd>
 */
//var apache_log = require('apache-log');
var apache_log = require('/usr/local/lib/node_modules/apache-log/lib/apache-log.js');
var http = require('http');
var server = http.createServer();
 
server.on('request', doRequest);
server.listen(8080);
 
function doRequest(req, res) {
        apache_log.logger(req,res);
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.write('Hello World\n');
        res.end();
}

実行方法

ウェブサーバを起動します。

$ sudo node http_apache-log1.js

コマンドラインでウェブサーバにアクセスします。

$ curl http://localhost:8080/
Hello World
$ $ curl 'http://localhost:8080/?foo=bar&hoge=meta'
Hello World

以下、アクセスログです。

$ tail -f /var/log/access.log
127.0.0.1 - - [07/Sep/2014:05:42:10 +0000] "GET / HTTP/1.1" 200 - "-" "curl/7.36.0"
127.0.0.1 - - [07/Sep/2014:05:50:24 +0000] "GET /?foo=bar&hoge=meta HTTP/1.1" 200 - "-" "curl/7.36.0"

このように簡単にApacheライクなアクセスログを記録できました。

関連項目




スポンサーリンク