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ライクなアクセスログを記録できました。
関連項目
- node.jsによるHTTPサーバの作り方
- node.jsによるHTTPSサーバの作り方
- node.jsでSPDY対応ウェブサーバ
- node.js foreverでHTTPサーバをデーモン化する
- node.js HTTPサーバでApacheライクなログを記録する
- node.js HTTPサーバでレスポンスをgzipやdeflateで圧縮する
- node.js clusterでHTTPサーバをマルチプロセス化する
ツイート
スポンサーリンク