mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
Always use the the user configured logger class.
Previously, configuring statsd_host would override the configured class
This commit is contained in:
parent
f68a043c24
commit
34b595e817
@ -532,6 +532,10 @@ The logger you want to use to log events in Gunicorn.
|
||||
The default class (``gunicorn.glogging.Logger``) handle most of
|
||||
normal usages in logging. It provides error and access logging.
|
||||
|
||||
If you enable statsd support, then a special subclass
|
||||
(``gunicorn.instrument.statsd.Statsd``) is used instead, which handles
|
||||
sending the metrics to *statsd_host*
|
||||
|
||||
You can provide your own worker by giving Gunicorn a
|
||||
Python path to a subclass like ``gunicorn.glogging.Logger``.
|
||||
Alternatively the syntax can also load the Logger class
|
||||
@ -611,6 +615,9 @@ statsd_host
|
||||
|
||||
``host:port`` of the statsd server to log to.
|
||||
|
||||
Note: enabling this switches the default *logger_class* to
|
||||
``gunicorn.instrument.statsd.Statsd``
|
||||
|
||||
.. versionadded:: 19.1
|
||||
|
||||
statsd_prefix
|
||||
|
||||
@ -144,16 +144,18 @@ class Config(object):
|
||||
uri = self.settings['logger_class'].get()
|
||||
if uri == "simple":
|
||||
# support the default
|
||||
uri = "gunicorn.glogging.Logger"
|
||||
uri = LoggerClass.default
|
||||
|
||||
# if statsd is on, automagically switch to the statsd logger
|
||||
if uri is not None and 'statsd_host' in self.settings and self.settings['statsd_host'].value is not None:
|
||||
logger_class = util.load_class("gunicorn.instrument.statsd.Statsd",
|
||||
section="gunicorn.loggers")
|
||||
else:
|
||||
logger_class = util.load_class(uri,
|
||||
default="gunicorn.glogging.Logger",
|
||||
section="gunicorn.loggers")
|
||||
# if default logger is in use, and statsd is on, automagically switch
|
||||
# to the statsd logger
|
||||
if uri == LoggerClass.default:
|
||||
if 'statsd_host' in self.settings and self.settings['statsd_host'].value is not None:
|
||||
uri = "gunicorn.instrument.statsd.Statsd"
|
||||
|
||||
logger_class = util.load_class(
|
||||
uri,
|
||||
default="gunicorn.glogging.Logger",
|
||||
section="gunicorn.loggers")
|
||||
|
||||
if hasattr(logger_class, "install"):
|
||||
logger_class.install()
|
||||
|
||||
@ -13,6 +13,8 @@ import pytest
|
||||
from gunicorn import config
|
||||
from gunicorn.app.base import Application
|
||||
from gunicorn.workers.sync import SyncWorker
|
||||
from gunicorn import glogging
|
||||
from gunicorn.instrument import statsd
|
||||
|
||||
dirname = os.path.dirname(__file__)
|
||||
def cfg_module():
|
||||
@ -57,6 +59,9 @@ def test_property_access():
|
||||
# Class was loaded
|
||||
assert c.worker_class == SyncWorker
|
||||
|
||||
# logger class was loaded
|
||||
assert c.logger_class == glogging.Logger
|
||||
|
||||
# Workers defaults to 1
|
||||
assert c.workers == 1
|
||||
c.set("workers", 3)
|
||||
@ -259,3 +264,24 @@ def test_nworkers_changed():
|
||||
|
||||
c.set("nworkers_changed", nworkers_changed_3)
|
||||
assert c.nworkers_changed(1, 2, 3) == 3
|
||||
|
||||
|
||||
def test_statsd_changes_logger():
|
||||
c = config.Config()
|
||||
assert c.logger_class == glogging.Logger
|
||||
c.set('statsd_host', 'localhost:12345')
|
||||
assert c.logger_class == statsd.Statsd
|
||||
|
||||
|
||||
class MyLogger(glogging.Logger):
|
||||
# dummy custom logger class for testing
|
||||
pass
|
||||
|
||||
|
||||
def test_always_use_configured_logger():
|
||||
c = config.Config()
|
||||
c.set('logger_class', __name__ + '.MyLogger')
|
||||
assert c.logger_class == MyLogger
|
||||
c.set('statsd_host', 'localhost:12345')
|
||||
# still uses custom logger over statsd
|
||||
assert c.logger_class == MyLogger
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user