以前は 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'"