- Add info-level logging to all mobile websocket handle_in callbacks to track incoming messages (subscribe_bounds, update_bounds, search_callsign, etc.) - Create LogFilter plug to exclude K8s healthcheck requests from Phoenix logs - Filter logs for /health, /ready, and / endpoints to reduce noise from continuous healthcheck probes - Configure Plug.Telemetry to use custom log level function This eliminates noisy healthcheck logs while providing better visibility into mobile websocket API usage.
63 lines
1.9 KiB
Elixir
63 lines
1.9 KiB
Elixir
defmodule AprsmeWeb.Endpoint do
|
|
@moduledoc false
|
|
use Phoenix.Endpoint, otp_app: :aprsme
|
|
|
|
# The session will be stored in the cookie and signed,
|
|
# this means its contents can be read but not tampered with.
|
|
# Set :encryption_salt if you would also like to encrypt it.
|
|
@session_options [
|
|
store: :cookie,
|
|
key: "_aprs_key",
|
|
signing_salt: "0toQ/Ejk",
|
|
same_site: "Lax"
|
|
]
|
|
|
|
socket "/live", Phoenix.LiveView.Socket,
|
|
websocket: [connect_info: [session: @session_options], timeout: 60_000],
|
|
longpoll: [connect_info: [session: @session_options]]
|
|
|
|
# Mobile API socket for iOS/Android apps
|
|
socket "/mobile", AprsmeWeb.MobileUserSocket,
|
|
websocket: [timeout: 60_000],
|
|
longpoll: false
|
|
|
|
# Serve at "/" the static files from "priv/static" directory.
|
|
#
|
|
# You should set gzip to true if you are running phx.digest
|
|
# when deploying your static files in production.
|
|
plug Plug.Static,
|
|
at: "/",
|
|
from: :aprsme,
|
|
gzip: false,
|
|
only: ~w(assets fonts images aprs-symbols favicon.ico robots.txt)
|
|
|
|
# Code reloading can be explicitly enabled under the
|
|
# :code_reloader configuration of your endpoint.
|
|
if code_reloading? do
|
|
socket "/phoenix/live_reload/socket", Phoenix.LiveReloader.Socket
|
|
plug Phoenix.LiveReloader
|
|
plug Phoenix.CodeReloader
|
|
plug Phoenix.Ecto.CheckRepoStatus, otp_app: :aprsme
|
|
end
|
|
|
|
plug Phoenix.LiveDashboard.RequestLogger,
|
|
param_key: "request_logger",
|
|
cookie_key: "request_logger"
|
|
|
|
plug Plug.RequestId
|
|
plug Plug.Telemetry, event_prefix: [:phoenix, :endpoint], log: {AprsmeWeb.Plugs.LogFilter, :log_level, []}
|
|
|
|
plug Plug.Parsers,
|
|
parsers: [:urlencoded, :multipart, :json],
|
|
pass: ["*/*"],
|
|
json_decoder: Phoenix.json_library()
|
|
|
|
plug Plug.MethodOverride
|
|
plug Plug.Head
|
|
plug Plug.Session, @session_options
|
|
|
|
# Health check endpoint
|
|
plug AprsmeWeb.Plugs.HealthCheck
|
|
|
|
plug AprsmeWeb.Router
|
|
end
|