mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
Merge pull request #1917 from cuongtranx/1775-support-log-config-json
added capability to take JSON as log's config
This commit is contained in:
commit
400d84733a
@ -305,6 +305,16 @@ The log config file to use.
|
||||
Gunicorn uses the standard Python logging module's Configuration
|
||||
file format.
|
||||
|
||||
.. _logconfig-json:
|
||||
|
||||
logiconfig_json
|
||||
~~~~~~~~~
|
||||
|
||||
* ``--log-config-json FILE``
|
||||
* ``None``
|
||||
|
||||
The log config file written in JSON.
|
||||
|
||||
.. _logconfig-dict:
|
||||
|
||||
``logconfig_dict``
|
||||
@ -316,8 +326,9 @@ file format.
|
||||
|
||||
The log config dictionary to use, using the standard Python
|
||||
logging module's dictionary configuration format. This option
|
||||
takes precedence over the :ref:`logconfig` option, which uses the
|
||||
older file configuration format.
|
||||
takes precedence over the :ref:`logconfig` and :ref:`logConfigJson` options, which uses the
|
||||
older file configuration format and JSON respectively.
|
||||
|
||||
|
||||
Format: https://docs.python.org/3/library/logging.config.html#logging.config.dictConfig
|
||||
|
||||
|
||||
@ -1507,8 +1507,9 @@ class LogConfigDict(Setting):
|
||||
desc = """\
|
||||
The log config dictionary to use, using the standard Python
|
||||
logging module's dictionary configuration format. This option
|
||||
takes precedence over the :ref:`logconfig` option, which uses the
|
||||
older file configuration format.
|
||||
takes precedence over the :ref:`logconfig` and :ref:`logConfigJson` options,
|
||||
which uses the older file configuration format and JSON
|
||||
respectively.
|
||||
|
||||
Format: https://docs.python.org/3/library/logging.config.html#logging.config.dictConfig
|
||||
|
||||
@ -1516,6 +1517,22 @@ class LogConfigDict(Setting):
|
||||
"""
|
||||
|
||||
|
||||
class LogConfigJson(Setting):
|
||||
name = "logconfig_json"
|
||||
section = "Logging"
|
||||
cli = ["--log-config-json"]
|
||||
meta = "FILE"
|
||||
validator = validate_string
|
||||
default = None
|
||||
desc = """\
|
||||
The log config to read config from a JSON file
|
||||
|
||||
Format: https://docs.python.org/3/library/logging.config.html#logging.config.jsonConfig
|
||||
|
||||
.. versionadded:: 20.0
|
||||
"""
|
||||
|
||||
|
||||
class SyslogTo(Setting):
|
||||
name = "syslog_addr"
|
||||
section = "Logging"
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
|
||||
import base64
|
||||
import binascii
|
||||
import json
|
||||
import time
|
||||
import logging
|
||||
logging.Logger.manager.emittedNoHandlerWarning = 1 # noqa
|
||||
@ -239,6 +240,21 @@ class Logger(object):
|
||||
TypeError
|
||||
) as exc:
|
||||
raise RuntimeError(str(exc))
|
||||
elif cfg.logconfig_json:
|
||||
config = CONFIG_DEFAULTS.copy()
|
||||
if os.path.exists(cfg.logconfig_json):
|
||||
try:
|
||||
config_json = json.load(open(cfg.logconfig_json))
|
||||
config.update(config_json)
|
||||
dictConfig(config)
|
||||
except (
|
||||
json.JSONDecodeError,
|
||||
AttributeError,
|
||||
ImportError,
|
||||
ValueError,
|
||||
TypeError
|
||||
) as exc:
|
||||
raise RuntimeError(str(exc))
|
||||
elif cfg.logconfig:
|
||||
if os.path.exists(cfg.logconfig):
|
||||
defaults = CONFIG_DEFAULTS.copy()
|
||||
@ -333,7 +349,7 @@ class Logger(object):
|
||||
"""
|
||||
|
||||
if not (self.cfg.accesslog or self.cfg.logconfig or
|
||||
self.cfg.logconfig_dict or
|
||||
self.cfg.logconfig_dict or self.cfg.logconfig_json or
|
||||
(self.cfg.syslog and not self.cfg.disable_redirect_access_to_syslog)):
|
||||
return
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user