Compare commits
2 Commits
0.1.8
...
df44be2b1b
Author | SHA1 | Date | |
---|---|---|---|
df44be2b1b | |||
6e635d1b30 |
19
.drone.yml
19
.drone.yml
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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",
|
||||||
|
@ -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,
|
||||||
[]
|
[]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -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
|
Reference in New Issue
Block a user