mirror of
https://git.ianrenton.com/ian/spothole.git
synced 2026-09-20 14:27:42 +00:00
Replace root logger calls with module-specific loggers
This commit is contained in:
@@ -18,6 +18,8 @@ from core.utils import infer_band_from_freq, safe_json_dumps
|
||||
from data.spot import Spot
|
||||
from providers.spot.spot_provider import SpotProvider
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
RECAPTCHA_VERIFY_URL = "https://www.google.com/recaptcha/api/siteverify"
|
||||
|
||||
|
||||
@@ -220,7 +222,7 @@ class APISpotHandler(tornado.web.RequestHandler):
|
||||
except NotImplementedError as e:
|
||||
upstream_warning = str(e)
|
||||
except Exception:
|
||||
logging.exception(f"Failed to submit spot upstream to {upstream_provider_name}")
|
||||
logger.exception(f"Failed to submit spot upstream to {upstream_provider_name}")
|
||||
upstream_warning = (
|
||||
f"Spot was saved locally but upstream submission to {upstream_provider_name} failed."
|
||||
)
|
||||
@@ -244,7 +246,7 @@ class APISpotHandler(tornado.web.RequestHandler):
|
||||
self.set_header("Content-Type", "application/json")
|
||||
|
||||
except Exception:
|
||||
logging.exception("Exception when handling client request to add spot API")
|
||||
logger.exception("Exception when handling client request to add spot API")
|
||||
self.write(safe_json_dumps("Error - an internal server error occurred."))
|
||||
self.set_status(500)
|
||||
self.set_header("Cache-Control", "no-store")
|
||||
@@ -270,5 +272,5 @@ class APISpotHandler(tornado.web.RequestHandler):
|
||||
)
|
||||
return response.ok and response.json().get("success", False)
|
||||
except Exception:
|
||||
logging.exception("reCAPTCHA verification request failed")
|
||||
logger.exception("reCAPTCHA verification request failed")
|
||||
return False
|
||||
|
||||
@@ -13,6 +13,8 @@ from core.prometheus_metrics_handler import api_requests_counter
|
||||
from core.utils import safe_json_dumps
|
||||
from data.lookup_credentials import extract_credentials
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class APIAlertsHandler(tornado.web.RequestHandler):
|
||||
"""API request handler for /api/v2/alerts"""
|
||||
@@ -63,7 +65,7 @@ class APIAlertsHandler(tornado.web.RequestHandler):
|
||||
self.write(safe_json_dumps(f"Bad request - {e!s}"))
|
||||
self.set_status(400)
|
||||
except Exception:
|
||||
logging.exception("Exception when handling client request to alerts API")
|
||||
logger.exception("Exception when handling client request to alerts API")
|
||||
self.write(safe_json_dumps("Error - an internal server error occurred."))
|
||||
self.set_status(500)
|
||||
self.set_header("Cache-Control", "no-store")
|
||||
@@ -110,7 +112,7 @@ class APIAlertsStreamHandler(tornado_eventsource.handler.EventSourceHandler):
|
||||
self._sse_alert_broadcaster.register(self)
|
||||
|
||||
except Exception:
|
||||
logging.exception("Exception when serving SSE socket")
|
||||
logger.exception("Exception when serving SSE socket")
|
||||
self.close()
|
||||
|
||||
def close(self):
|
||||
@@ -129,7 +131,7 @@ class APIAlertsStreamHandler(tornado_eventsource.handler.EventSourceHandler):
|
||||
alert.infer_missing(self._credentials)
|
||||
self.write_message(msg=safe_json_dumps(alert))
|
||||
except Exception:
|
||||
logging.exception("Exception in SSE callback, connection will be closed")
|
||||
logger.exception("Exception in SSE callback, connection will be closed")
|
||||
self.close()
|
||||
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@ from tornado.web import Application
|
||||
from core.prometheus_metrics_handler import api_requests_counter
|
||||
from core.utils import safe_json_dumps
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
CONTINENTS = ["EU", "NA", "SA", "AS", "AF", "OC", "AN"]
|
||||
BANDS = ["160m", "80m", "60m", "40m", "30m", "20m", "17m", "15m", "12m", "10m", "6m"]
|
||||
CONTINENTS_SET = frozenset(CONTINENTS)
|
||||
@@ -68,6 +70,6 @@ class APIDxStatsHandler(tornado.web.RequestHandler):
|
||||
self.set_header("Content-Type", "application/json")
|
||||
|
||||
except Exception:
|
||||
logging.exception("Exception when handling client request to dx stats API")
|
||||
logger.exception("Exception when handling client request to dx stats API")
|
||||
self.write(safe_json_dumps("Error - an internal server error occurred."))
|
||||
self.set_status(500)
|
||||
|
||||
@@ -22,6 +22,8 @@ from core.utils import safe_json_dumps
|
||||
from data.lookup_credentials import extract_credentials
|
||||
from data.sig_ref import SIGRef
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class APILookupCallHandler(tornado.web.RequestHandler):
|
||||
"""API request handler for /api/v2/lookup/call"""
|
||||
@@ -66,7 +68,7 @@ class APILookupCallHandler(tornado.web.RequestHandler):
|
||||
self.set_status(422)
|
||||
|
||||
except Exception:
|
||||
logging.exception("Exception when handling client request to call lookup API")
|
||||
logger.exception("Exception when handling client request to call lookup API")
|
||||
self.write(safe_json_dumps("Error - an internal server error occurred."))
|
||||
self.set_status(500)
|
||||
|
||||
@@ -124,7 +126,7 @@ class APILookupSIGRefHandler(tornado.web.RequestHandler):
|
||||
self.set_status(422)
|
||||
|
||||
except Exception:
|
||||
logging.exception("Exception when handling client request to sig ref lookup API")
|
||||
logger.exception("Exception when handling client request to sig ref lookup API")
|
||||
self.write(safe_json_dumps("Error - an internal server error occurred."))
|
||||
self.set_status(500)
|
||||
|
||||
@@ -192,7 +194,7 @@ class APILookupGridHandler(tornado.web.RequestHandler):
|
||||
self.set_status(422)
|
||||
|
||||
except Exception:
|
||||
logging.exception("Exception when handling client request to grid ref lookup API")
|
||||
logger.exception("Exception when handling client request to grid ref lookup API")
|
||||
self.write(safe_json_dumps("Error - an internal server error occurred."))
|
||||
self.set_status(500)
|
||||
|
||||
|
||||
@@ -19,6 +19,8 @@ from core.constants import (
|
||||
from core.prometheus_metrics_handler import api_requests_counter
|
||||
from core.utils import safe_json_dumps
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class APIOptionsHandler(tornado.web.RequestHandler):
|
||||
"""API request handler for /api/v2/options"""
|
||||
@@ -119,6 +121,6 @@ class APIOptionsHandler(tornado.web.RequestHandler):
|
||||
self.set_header("Content-Type", "application/json")
|
||||
|
||||
except Exception:
|
||||
logging.exception("Exception when handling client request to options API")
|
||||
logger.exception("Exception when handling client request to options API")
|
||||
self.write(safe_json_dumps("Error - an internal server error occurred."))
|
||||
self.set_status(500)
|
||||
|
||||
@@ -10,6 +10,8 @@ from tornado.web import Application
|
||||
from core.prometheus_metrics_handler import api_requests_counter
|
||||
from core.utils import safe_json_dumps
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class APISolarConditionsHandler(tornado.web.RequestHandler):
|
||||
"""API request handler for /api/v2/solar"""
|
||||
@@ -42,6 +44,6 @@ class APISolarConditionsHandler(tornado.web.RequestHandler):
|
||||
self.set_header("Content-Type", "application/json")
|
||||
|
||||
except Exception:
|
||||
logging.exception("Exception when handling client request to solar conditions API")
|
||||
logger.exception("Exception when handling client request to solar conditions API")
|
||||
self.write(safe_json_dumps("Error - an internal server error occurred."))
|
||||
self.set_status(500)
|
||||
|
||||
@@ -13,6 +13,8 @@ from core.prometheus_metrics_handler import api_requests_counter
|
||||
from core.utils import safe_json_dumps
|
||||
from data.lookup_credentials import extract_credentials
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class APISpotsHandler(tornado.web.RequestHandler):
|
||||
"""API request handler for /api/v2/spots"""
|
||||
@@ -63,7 +65,7 @@ class APISpotsHandler(tornado.web.RequestHandler):
|
||||
self.write(safe_json_dumps(f"Bad request - {e!s}"))
|
||||
self.set_status(400)
|
||||
except Exception:
|
||||
logging.exception("Excedption when handling client request to spots API")
|
||||
logger.exception("Excedption when handling client request to spots API")
|
||||
self.write(safe_json_dumps("Error - an internal server error occurred."))
|
||||
self.set_status(500)
|
||||
self.set_header("Cache-Control", "no-store")
|
||||
@@ -112,7 +114,7 @@ class APISpotsStreamHandler(tornado_eventsource.handler.EventSourceHandler):
|
||||
self._sse_spot_broadcaster.register(self)
|
||||
|
||||
except Exception:
|
||||
logging.exception("Exception when serving SSE socket")
|
||||
logger.exception("Exception when serving SSE socket")
|
||||
self.close()
|
||||
|
||||
def close(self):
|
||||
@@ -132,7 +134,7 @@ class APISpotsStreamHandler(tornado_eventsource.handler.EventSourceHandler):
|
||||
spot.infer_missing(self._credentials)
|
||||
self.write_message(msg=safe_json_dumps(spot))
|
||||
except Exception:
|
||||
logging.exception("Exception in SSE callback, connection will be closed")
|
||||
logger.exception("Exception in SSE callback, connection will be closed")
|
||||
self.close()
|
||||
|
||||
|
||||
|
||||
@@ -10,6 +10,8 @@ from tornado.web import Application
|
||||
from core.prometheus_metrics_handler import api_requests_counter
|
||||
from core.utils import safe_json_dumps
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class APIStatusHandler(tornado.web.RequestHandler):
|
||||
"""API request handler for /api/v2/status"""
|
||||
@@ -42,6 +44,6 @@ class APIStatusHandler(tornado.web.RequestHandler):
|
||||
self.set_header("Content-Type", "application/json")
|
||||
|
||||
except Exception:
|
||||
logging.exception("Exception when handling client request to status API")
|
||||
logger.exception("Exception when handling client request to status API")
|
||||
self.write(safe_json_dumps("Error - an internal server error occurred."))
|
||||
self.set_status(500)
|
||||
|
||||
@@ -15,6 +15,8 @@ from core.sig_utils import get_ref_regex_for_sig
|
||||
from core.utils import infer_band_from_freq, safe_json_dumps
|
||||
from data.spot import Spot
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class V1APISpotHandler(tornado.web.RequestHandler):
|
||||
"""API request handler for /api/v1/spot (POST). Included in early Spothole v2 for backwards compatibility."""
|
||||
@@ -143,7 +145,7 @@ class V1APISpotHandler(tornado.web.RequestHandler):
|
||||
self.set_header("Content-Type", "application/json")
|
||||
|
||||
except Exception:
|
||||
logging.exception("Exception when handling client request to add spot API")
|
||||
logger.exception("Exception when handling client request to add spot API")
|
||||
self.write(safe_json_dumps("Error - an internal server error occurred."))
|
||||
self.set_status(500)
|
||||
self.set_header("Cache-Control", "no-store")
|
||||
|
||||
@@ -3,6 +3,8 @@ import threading
|
||||
|
||||
from tornado.ioloop import IOLoop
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class SSEBroadcaster:
|
||||
"""Bridge between DataStore listener callbacks (which fire on provider threads) to Tornado's async SSE handlers
|
||||
@@ -35,5 +37,5 @@ class SSEBroadcaster:
|
||||
handler.callback(value)
|
||||
except Exception:
|
||||
# Connection probably dropped, ignore and de-register the handler to stop getting future items.
|
||||
logging.debug("Failed to push to an SSE client; dropping it")
|
||||
logger.debug("Failed to push to an SSE client; dropping it")
|
||||
self.unregister(handler)
|
||||
|
||||
+7
-5
@@ -34,6 +34,8 @@ from server.handlers.metrics import PrometheusMetricsHandler
|
||||
from server.handlers.pagetemplate import PageTemplateHandler
|
||||
from server.sse_broadcaster import SSEBroadcaster
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
_HERE = os.path.dirname(__file__ or "")
|
||||
|
||||
|
||||
@@ -159,7 +161,7 @@ class WebServer:
|
||||
|
||||
# If in API-only mode, serve a basic homepage; in normal mode, serve the usual UI routes
|
||||
if self._api_only_mode:
|
||||
logging.info("API-only mode is enabled. Web UI will not be served.")
|
||||
logger.info("API-only mode is enabled. Web UI will not be served.")
|
||||
ui_routes = [
|
||||
(
|
||||
r"/",
|
||||
@@ -238,8 +240,8 @@ class WebServer:
|
||||
debug=False,
|
||||
)
|
||||
app.listen(self._port, xheaders=True)
|
||||
logging.info(f"Web server running on port {WEB_SERVER_PORT!s}")
|
||||
logging.info(f"You can access your copy of Spothole at {BASE_URL}")
|
||||
logger.info(f"Web server running on port {WEB_SERVER_PORT!s}")
|
||||
logger.info(f"You can access your copy of Spothole at {BASE_URL}")
|
||||
await self._shutdown_event.wait()
|
||||
|
||||
|
||||
@@ -249,9 +251,9 @@ def request_log(handler):
|
||||
|
||||
if LOG_WEB_REQUESTS:
|
||||
if handler.get_status() < 500:
|
||||
log_method = logging.info
|
||||
log_method = logger.info
|
||||
else:
|
||||
log_method = logging.warning
|
||||
log_method = logger.warning
|
||||
|
||||
request = handler.request
|
||||
client_ip = request.remote_ip
|
||||
|
||||
Reference in New Issue
Block a user