def patch_django(g): if LOCAL: g["INSTALLED_APPS"] += [] g["MIDDLEWARE_CLASSES"] += [] if DEBUG: log_setting("DEBUG_TOOLBAR", "is on") g["DEBUG"] = DEBUG g["PAYPAL_TEST"] = DEBUG g["INSTALLED_APPS"] += [ "debug_panel", "debug_toolbar", "django_extensions", # 'devserver', ] g["MIDDLEWARE_CLASSES"] += [ # For AJAX requests https://github.com/recamshak/django-debug-panel # 'debug_panel.middleware.DebugPanelMiddleware', "debug_toolbar.middleware.DebugToolbarMiddleware", # 'tempest.core.middleware.ProcessExceptionMiddleware', # 'devserver.middleware.DevServerMiddleware', ] g["DEBUG_TOOLBAR_PANELS"] = [ "debug_toolbar.panels.versions.VersionsPanel", "debug_toolbar.panels.timer.TimerPanel", "debug_toolbar.panels.settings.SettingsPanel", "debug_toolbar.panels.headers.HeadersPanel", "debug_toolbar.panels.request.RequestPanel", "debug_toolbar.panels.sql.SQLPanel", "debug_toolbar.panels.staticfiles.StaticFilesPanel", "debug_toolbar.panels.templates.TemplatesPanel", "debug_toolbar.panels.cache.CachePanel", "debug_toolbar.panels.signals.SignalsPanel", # 'debug_toolbar.panels.logging.LoggingPanel', "debug_toolbar.panels.redirects.RedirectsPanel", # 'debug_toolbar.panels.profiling.ProfilingPanel', # 'debug_toolbar_line_profiler.panel.ProfilingPanel', ] g["DEVSERVER_MODULES"] = ( "devserver.modules.sql.SQLRealTimeModule", "devserver.modules.sql.SQLSummaryModule", "devserver.modules.profile.ProfileSummaryModule", # Modules not enabled by default "devserver.modules.ajax.AjaxDumpModule", "devserver.modules.profile.MemoryUseModule", "devserver.modules.cache.CacheSummaryModule", "devserver.modules.profile.LineProfilerModule", )
def patch_geoip(g): # GeoIP databases are sometimes stored at an alternate path if not g.get("GEOIP_PATH"): log_setting("GEOIP", "is off") return if not (path(g["GEOIP_PATH"]) / g["GEOIP_CITY"]).exists(): g["GEOIP_PATH"] = "/usr/local/var/GeoIP" if not (path(g["GEOIP_PATH"]) / g["GEOIP_CITY"]).exists(): g["GEOIP_CITY"] = "GeoLiteCity.dat" log_setting("GEOIP", "is on")
def patch_sentry(g): if LOCAL or TEST: log_setting("RAVEN", "is off") g.get("RAVEN_CONFIG", {})["dsn"] = None else: log_setting("RAVEN", "is on")
def patch_redis(g): REDIS_URL = env_or("REDIS_URL", None) if REDIS_URL: log_setting("REDIS_URL", REDIS_URL) g["REDIS_URL"] = REDIS_URL
def patch_logging(g, key="LOGGING"): # level presets debug_simple = {"level": "DEBUG", "handlers": ["console-simple"], "propagate": False} info_simple = {"level": "INFO", "handlers": ["console-simple"], "propagate": False} info_verbose = {"level": "INFO", "handlers": ["console"], "propagate": False} error_verbose = {"level": "ERROR", "handlers": ["console"], "propagate": False} # logging dict sections filters = { "require_debug_false": {"()": "django.utils.log.RequireDebugFalse"}, "require_debug_true": {"()": "django.utils.log.RequireDebugTrue"}, } formatters = { "verbose": {"format": "%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s"}, "simple": {"format": "%(levelname)s %(message)s"}, } handlers = { "console": { "level": "DEBUG", "class": "logging.StreamHandler", "filters": ["require_debug_false"], "formatter": "verbose", }, "console-simple": { "level": "DEBUG", "class": "logging.StreamHandler", "filters": ["require_debug_true"], "formatter": "simple", }, "null": {"level": "DEBUG", "class": "logging.NullHandler"}, "sentry": { "level": "ERROR", # To capture more than ERROR, change to WARNING, INFO, etc. "class": "raven.contrib.django.raven_compat.handlers.SentryHandler", "filters": ["require_debug_false"], "tags": {"custom-tag": "x"}, }, } local_logging = { "version": 1, "disable_existing_loggers": True, "filters": filters, "formatters": formatters, "handlers": handlers, "root": {"handlers": ["console-simple", "sentry"], "level": "ERROR", "propagate": True}, "sentry.errors.client.django": debug_simple, } if DEBUG or LOCAL or VERBOSE: log_setting("LOGGING", "is verbose") local_logging.setdefault("loggers", {}).update( { "lindy": debug_simple if DEBUG else info_simple, "tests": info_verbose, "requests": debug_simple if DEBUG else info_simple, "kazoo": error_verbose, "heka": debug_simple if DEBUG else info_simple, "trace": debug_simple, } ) local_logging.setdefault("root", {}).update({"level": "DEBUG"}) local_logging.setdefault("loggers", {}).update({"": local_logging["root"]}) LOGGING = g.setdefault(key, {}) for sub_key, value in local_logging.items(): if isinstance(value, dict): LOGGING.setdefault(sub_key, {}).update(value) else: LOGGING[sub_key] = value