expressを使ってサービスを開始する場合、
デフォルトのログではユーザの細かな情報までは得られないので、
app.jsを編集して、apacheのようなアクセスログにしてみました。
// app.js app.use(express.favicon()); // remove default logging // app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); // write access log app.use(function(req, res, next) { console.log([ req.headers['x-forwarded-for'] || req.client.remoteAddress, new Date().toLocaleString(), req.method, req.url, res.statusCode, req.headers.referer || '-', req.headers['user-agent'] || '-' ].join('\t') ); next(); }); app.use(app.router); // continue ...
ってな感じで、app.routerの前にfunctionを突っ込んで、欲しい情報を抜き出します。
その配列をtab区切りで1つの文字列にしてconsole.logで書き込んでいます。
次に、ログローテート用にスクリプトを書きました。
#!/bin/bash forever stop /var/www/public_html/app.js DATE=`date +%Y%m%d` mv -f /var/www/public_html/log/access.log /var/www/public_html/log/old/access-${DATE}.log forever start -a -l /var/www/public_html/log/access.log /var/www/public_html/app.js gzip -f /var/www/public_html/log/old/*.log
基本、ストップ・スタートをしているだけですが、
ログ・ファイルの場所を異動させてgzipしています。
こんな感じでサービス運用しています。
でも、これだと一瞬サービス止まるんですよね。
動かしつつも、ログローテートはこちらを参照。
0 件のコメント:
コメントを投稿