Write a Heroku-like logger in Elixir Plug
TIL
763
elixir
37
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

47 bài viết.
463 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 gần 2 năm trước
69 5
White
48 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 3 năm trước
48 26
White
46 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 hơn 3 năm trước
46 9
Bài viết liên quan
White
9 6
Chưa xem phần 2? Xem (Link) Trong bài viết này tôi giới thiệu cho các bạn về khái niệm function arity, một cách gọi mĩ miều của số lượng argument ...
Lơi Rệ viết 5 năm trước
9 6
White
0 4
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 hơn 2 năm trước
0 4
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
47 bài viết.
463 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á!