meinheld でログを出す

以前は meinheld はログに対応してなかったけど、0.5.1 以降は対応している。

との事なので、試してみた。


まずは Gunicorn の設定ファイル。
Gunicorn 公式の example から拝借してちょっと変更。

bind = '127.0.0.1:8000'
backlog = 2048
workers = 2
worker_class = 'egg:meinheld#gunicorn_worker'
worker_connections = 1000
timeout = 30
keepalive = 2
debug = False
spew = False
daemon = False
pidfile = None
umask = 0
user = None
group = None
tmp_upload_dir = None
errorlog = '-'
loglevel = 'info'
accesslog = '-'
access_log_format = '"%(h)s %(l)s %(u)s [%(t)s] "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s" "%(p)s" %(T)s %(D)s'
proc_name = None
def post_fork(server, worker):
    server.log.info("Worker spawned (pid: %s)", worker.pid)

def pre_fork(server, worker):
    pass

def pre_exec(server):
    server.log.info("Forked child, re-executing.")

def when_ready(server):
    server.log.info("Server is ready. Spwawning workers")

これで起動し、ブラウザでアクセスすると以下のように表示された。

gunicorn -c gunicorn.conf.py manager:app
2013-02-24 22:35:40 [9159] [INFO] Starting gunicorn 0.17.2
2013-02-24 22:35:40 [9159] [INFO] Listening at: http://127.0.0.1:8000 (9159)
2013-02-24 22:35:40 [9159] [INFO] Using worker: egg:meinheld#gunicorn_worker
2013-02-24 22:35:40 [9159] [INFO] Server is ready. Spwawning workers
2013-02-24 22:35:40 [9164] [INFO] Booting worker with pid: 9164
2013-02-24 22:35:40 [9164] [INFO] Worker spawned (pid: 9164)
2013-02-24 22:35:40 [9165] [INFO] Booting worker with pid: 9165
2013-02-24 22:35:40 [9165] [INFO] Worker spawned (pid: 9165)
"127.0.0.1 - - [[24/Feb/2013:22:35:52 +0900]] "GET / HTTP/1.1" 200 11 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:19.0) Gecko/20100101 Firefox/19.0" "<9164>" 100 10012


access_log_format は以下のように定義されている。

フォーマット 定義
h リモートアドレス
l -
u -
t LOCAL_TIME
r REQUEST_METHOD, PATH_INFO, -
s STATUS_CODE
b 送信バイト数
f HTTP Referer
a HTTP UserAgent
T Request Time / 100
D Request TIme
p PID

LTSV 対応にする場合はこうで良いか?

access_log_format = "host:'%(h)s\treqtime:[%(t)s]\tmethod:'%(r)s'\tstatus:%(s)s\tsize:%(b)s\treferer:'%(f)s'\tua:'%(a)s'\treqtime_microsec:'%(D)s'"