gunicorn log-config access_log_format

老子叫甜甜 提交于 2021-02-08 14:00:07

问题


I want gunicorn to log JSON in my docker container. I want to use --access-logformat in the config file. Trying to add format or access_log_format or access_logformat does not configure the logger. How do I configure the access_log_format to output JSON?

http://docs.gunicorn.org/en/stable/settings.html#access-log-format

gunicorn_logging.conf

[loggers]
keys=root, gunicorn.error, gunicorn.access

[handlers]
keys=console

[formatters]
keys=json

[logger_root]
level=INFO
handlers=console
access_log_format = '{"remote_ip":"%(h)s","request_id":"%({X-Request-Id}i)s","response_code":"%(s)s","request_method":"%(m)s","request_path":"%(U)s","request_querystring":"%(q)s","request_timetaken":"%(D)s","response_length":"%(B)s", "remote_addr": "%(h)s"}'

[logger_gunicorn.error]
level=ERROR
handlers=console
propagate=0
qualname=gunicorn.error

[logger_gunicorn.access]
level=DEBUG
handlers=console
propagate=0
qualname=gunicorn.access
access_log_format = '{"remote_ip":"%(h)s","request_id":"%({X-Request-Id}i)s","response_code":"%(s)s","request_method":"%(m)s","request_path":"%(U)s","request_querystring":"%(q)s","request_timetaken":"%(D)s","response_length":"%(B)s", "remote_addr": "%(h)s"}'

[handler_console]
class=StreamHandler
formatter=json
args=(sys.stdout, )

[formatter_json]
class=utils.jsonlogger.JSONWithTime

utils.jsonlogger:

from pythonjsonlogger import jsonlogger
import time


class JSONWithTime(jsonlogger.JsonFormatter):
    def formatTime(self, record, datefmt=None):
        ct = self.converter(record.created)
        t = time.strftime("%Y-%m-%dT%H:%M:%S", ct)
        s = "%s.%03dZ" % (t, record.msecs)
        return s

command line:

gunicorn myapp.wsgi:application --bind 0.0.0.0:8002 --worker-tmp-dir /dev/shm --log-level=DEBUG --timeout 120 --access-logfile=- --error-logfile=- --log-config /app/gunicorn_logging.conf

What I want:

{
  "stack_info": null,
  "level": "INFO",
  "timestamp": "2018-02-18T16:20:13.153947Z",
  "path": "/usr/local/lib/python3.5/site-packages/gunicorn/glogging.py",
  "message": "{\"request\": \"POST /format HTTP/1.1\", \"http_status_code\": \"200\", \"http_request_url\": \"/format\", \"http_query_string\": \"-\", \"http_verb\": \"POST\", \"http_version\": \"1.1\", \"remote_addr\": \"8.8.8.8\"}",
  "host": "87eab0ccce6a",
  "logger": "gunicorn.access",
  "tags": []
}

来源:https://stackoverflow.com/questions/56538791/gunicorn-log-config-access-log-format

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!