Packages
exq
0.16.2
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.0
0.17.0
0.16.2
0.16.1
0.16.0
0.15.0
0.14.0
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.2
0.12.1
0.12.0
0.11.0
0.10.1
0.10.0
0.9.1
0.9.0
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.3
0.7.2
0.7.1
0.7.0
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.0
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.2
Exq is a job processing library compatible with Resque / Sidekiq for the Elixir language.
Current section
Files
Jump to
Current section
Files
lib/exq/middleware/logger.ex
defmodule Exq.Middleware.Logger do
@behaviour Exq.Middleware.Behaviour
alias Exq.Middleware.Pipeline
import Pipeline
require Logger
def before_work(pipeline) do
Logger.info("#{log_context(pipeline)} start")
assign(pipeline, :started_at, DateTime.utc_now())
end
def after_processed_work(pipeline) do
Logger.info("#{log_context(pipeline)} done: #{formatted_diff(delta(pipeline))}")
pipeline
end
def after_failed_work(pipeline) do
Logger.warn(to_string(pipeline.assigns.error_message))
Logger.warn("#{log_context(pipeline)} fail: #{formatted_diff(delta(pipeline))}")
pipeline
end
defp delta(%Pipeline{assigns: assigns}) do
now_usecs = DateTime.utc_now() |> DateTime.to_unix(:microsecond)
started_usecs = assigns.started_at |> DateTime.to_unix(:microsecond)
now_usecs - started_usecs
end
defp log_context(%Pipeline{assigns: assigns}) do
"#{assigns.worker_module}[#{assigns.job.jid}]"
end
defp formatted_diff(diff) when diff > 1000, do: [diff |> div(1000) |> Integer.to_string(), "ms"]
defp formatted_diff(diff), do: [diff |> Integer.to_string(), "µs"]
end