Write a Heroku-like logger in Elixir Plug
TIL
781
elixir
40
White

Cẩm Huỳnh viết ngày 20/10/2017

Write a Heroku-like logger in Elixir plug

defmodule MyApp.WebApp.Logger do
  require Logger
  alias Plug.Conn
  @behaviour Plug

  def init(_opts) do
    {}
  end

  def call(conn, _) do
    start = System.monotonic_time()

    Conn.register_before_send(conn, fn conn ->
      if conn.status in 200..399 do
        Logger.info fn ->
          stop = System.monotonic_time()
          diff = System.convert_time_unit(stop - start, :native, :micro_seconds)

          ["path=", conn.request_path, ?\s,
           "method=", conn.method, ?\s,
           "status=", Integer.to_string(conn.status), ?\s,
           "time=", formatted_diff(diff), ?\s] # io data
        end
      end

      conn
    end)
  end

  defp formatted_diff(diff) when diff > 1000, do: [diff |> div(1000) |> Integer.to_string, "ms"]
  defp formatted_diff(diff), do: [Integer.to_string(diff), "µs"]
end

Use it

defmodule MyApp.Router do
  plug MyApp.WebApp.Logger
end

hqc 20-10-2017

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Cẩm Huỳnh

48 bài viết.
474 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
69 5
image cover]imgcover] “Make it work, make it right, make it fast.” Bạn vừa viết xong một ứng dụng web :tada:. Mọi thứ chạy ổn. Code cũng đã được...
Cẩm Huỳnh viết hơn 2 năm trước
69 5
White
49 26
Vừa rồi mình vừa tiết kiệm được $5 mỗi tháng sau khi migrate cái (Link) từ Digital Ocean sang Heroku Free Dyno. (Ảnh) Kết quả thật mĩ mãn vì hầu ...
Cẩm Huỳnh viết hơn 3 năm trước
49 26
White
47 9
(Ảnh) Vì sao lại là Bật Đèn? Ai từng đọc qua Tắt Đèn hẳn đã biết tác phẩm được kết thúc bằng tình huống: Buông tay, chị vội choàng dậy, mở cửa...
Cẩm Huỳnh viết gần 4 năm trước
47 9
Bài viết liên quan
White
0 5
fCC: Technical Documentation Page note So I have finished the HTML part of this exercise and I want to come here to lament about the lengthy HTML ...
HungHayHo viết gần 3 năm trước
0 5
White
4 0
I used Spring boot, Hibernate few times back then at University, I'v started using it again recently. In this (Link), I want to check how Spring J...
Rey viết 2 năm trước
4 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
48 bài viết.
474 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!