2 Commits

Author SHA1 Message Date
df44be2b1b improve logger
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-07 00:18:08 -05:00
6e635d1b30 improve ci
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-05 10:38:57 -05:00
5 changed files with 38 additions and 27 deletions

View File

@ -13,20 +13,24 @@ steps:
mount: mount:
- _build - _build
- deps - deps
- assets/node_modules/ - .npm
- .mix
- name: test - name: test
image: elixir:1.14.1-alpine image: elixir:1.14.1-alpine
environment: environment:
TEST_DATABASE_URL: ecto://postgres:postgres@database/memex_test TEST_DATABASE_URL: ecto://postgres:postgres@database/memex_test
HOST: testing.example.tld HOST: testing.example.tld
MIX_HOME: /drone/src/.mix
MIX_ARCHIVES: /drone/src/.mix/archives
MIX_ENV: test
commands: commands:
- apk add --no-cache build-base npm git python3 - apk add --no-cache build-base npm git
- mix local.rebar --force - mix local.rebar --force --if-missing
- mix local.hex --force - mix local.hex --force --if-missing
- mix deps.get - mix deps.get
- mix deps.compile - npm set cache .npm
- npm --prefix ./assets ci --progress=false --no-audit --loglevel=error - npm --prefix ./assets ci --no-audit --prefer-offline
- npm run --prefix ./assets deploy - npm run --prefix ./assets deploy
- mix do phx.digest, gettext.extract - mix do phx.digest, gettext.extract
- mix test.all - mix test.all
@ -76,7 +80,8 @@ steps:
mount: mount:
- _build - _build
- deps - deps
- assets/node_modules/ - .npm
- .mix
services: services:
- name: database - name: database

View File

@ -1,3 +1,3 @@
elixir 1.14.1-otp-25 elixir 1.14.1-otp-25
erlang 25.1.2 erlang 25.1.2
nodejs 16.18.0 nodejs 18.9.1

View File

@ -3,8 +3,8 @@
"description": " ", "description": " ",
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": "18.12.1", "node": "v18.9.1",
"npm": "8.19.2" "npm": "8.10.0"
}, },
"scripts": { "scripts": {
"deploy": "NODE_ENV=production webpack --mode production", "deploy": "NODE_ENV=production webpack --mode production",

View File

@ -4,7 +4,7 @@ defmodule Memex.Application do
@moduledoc false @moduledoc false
use Application use Application
alias Memex.ErrorReporter alias Memex.Logger
@impl true @impl true
def start(_type, _args) do def start(_type, _args) do
@ -33,7 +33,7 @@ defmodule Memex.Application do
[:oban, :job, :start], [:oban, :job, :start],
[:oban, :job, :stop] [:oban, :job, :stop]
], ],
&ErrorReporter.handle_event/4, &Logger.handle_event/4,
[] []
) )

View File

@ -1,4 +1,4 @@
defmodule Memex.ErrorReporter do defmodule Memex.Logger do
@moduledoc """ @moduledoc """
Custom logger for telemetry events Custom logger for telemetry events
@ -12,41 +12,47 @@ defmodule Memex.ErrorReporter do
data = data =
get_oban_job_data(meta, measure) get_oban_job_data(meta, measure)
|> Map.put(:stacktrace, Exception.format_stacktrace(stacktrace)) |> Map.put(:stacktrace, Exception.format_stacktrace(stacktrace))
|> pretty_encode()
Logger.error(meta.reason, data: pretty_encode(data)) Logger.error(meta.reason, data: data)
end end
def handle_event([:oban, :job, :start], measure, meta, _config) do def handle_event([:oban, :job, :start], measure, meta, _config) do
Logger.info("Started oban job", data: get_oban_job_data(meta, measure) |> pretty_encode()) data = get_oban_job_data(meta, measure) |> pretty_encode()
Logger.info("Started oban job", data: data)
end end
def handle_event([:oban, :job, :stop], measure, meta, _config) do def handle_event([:oban, :job, :stop], measure, meta, _config) do
Logger.info("Finished oban job", data: get_oban_job_data(meta, measure) |> pretty_encode()) data = get_oban_job_data(meta, measure) |> pretty_encode()
Logger.info("Finished oban job", data: data)
end end
def handle_event([:oban, :job, unhandled_event], measure, meta, _config) do def handle_event([:oban, :job, unhandled_event], measure, meta, _config) do
data = data =
get_oban_job_data(meta, measure) get_oban_job_data(meta, measure)
|> Map.put(:event, unhandled_event) |> Map.put(:event, unhandled_event)
|> pretty_encode()
Logger.warning("Unhandled oban job event", data: pretty_encode(data)) Logger.warning("Unhandled oban job event", data: data)
end end
def handle_event(unhandled_event, measure, meta, config) do def handle_event(unhandled_event, measure, meta, config) do
data = %{ data =
event: unhandled_event, pretty_encode(%{
meta: meta, event: unhandled_event,
measurements: measure, meta: meta,
config: config measurements: measure,
} config: config
})
Logger.warning("Unhandled telemetry event", data: pretty_encode(data)) Logger.warning("Unhandled telemetry event", data: data)
end end
defp get_oban_job_data(%{job: job}, measure) do defp get_oban_job_data(%{job: job}, measure) do
job %{
|> Map.take([:id, :args, :meta, :queue, :worker]) job: job |> Map.take([:id, :args, :meta, :queue, :worker]),
|> Map.merge(measure) measurements: measure
}
end end
defp pretty_encode(data) do defp pretty_encode(data) do