Elixir:
การบันทึกล็อก

วิธีการ:

ใน Elixir, วิธีหลักในการบันทึกข้อมูลคือผ่านโมดูล Logger ที่มีอยู่แล้วในตัว นี่คือวิธีที่คุณสามารถใช้มันได้:

defmodule MyApplication do
  require Logger

  def do_something_important(param) do
    Logger.info("เริ่มกระบวนการสำคัญด้วยพารามิเตอร์: #{param}")

    # จำลองการทำงาน
    :timer.sleep(1000)

    Logger.debug("กระบวนการเสร็จสิ้น")
  rescue
    error -> Logger.error("เกิดข้อผิดพลาด: #{inspect(error)}")
  end
end

# หากต้องการดู logs ของคุณ, เพียงแค่เรียกฟังก์ชัน:
MyApplication.do_something_important("MyParam")

สนิปเพ็ตง่ายๆ นี้แสดงวิธีการบันทึกที่ระดับต่างๆ (info, debug, และ error) เมื่อคุณรันสิ่งนี้, คุณจะไม่เห็นข้อความ debug นอกจากคุณจะตั้งค่าระดับ Logger เป็น :debug โดยค่าเริ่มต้น, Logger ของ Elixir จะกรองข้อความ log ที่ต่ำกว่า :info

ผลลัพธ์ตัวอย่างที่ระดับ :info อาจดูเช่นนี้:

14:32:40.123 [info]  เริ่มกระบวนการสำคัญด้วยพารามิเตอร์: MyParam
14:32:41.126 [error] เกิดข้อผิดพลาด: %RuntimeError{message: "runtime error"}

ดำดิ่งลึก:

Logger ของ Elixir เป็นเครื่องมือที่มีตัวตนมาตั้งแต่ช่วงแรกๆ ของภาษา และได้รับอิทธิพลจากระบบการ Logging ของภาษา BEAM อื่นๆ เช่น Erlang โลกเกอร์ให้ระดับการบันทึกข้อมูลต่างๆ – :debug, :info, :warn, และ :error – และสามารถปรับปรุง (pluggable) ได้, โดยอนุญาตให้ backend ต่างๆ ถูกเชื่อมต่อเข้ามาสำหรับการจัดการข้อความ log

อีกหนึ่งทางเลือกสำหรับ Logger ที่มีอยู่ตั้งแต่แรกสำหรับสถานการณ์ที่ซับซ้อนกว่าคือการใช้ไลบรารีการ Logging เช่น Logstash หรือ Sentry สำหรับ Elixir, ซึ่งสามารถให้คุณสมบัติเพิ่มเติมเช่นการติดตามและรวบรวมข้อผิดพลาดในรูปแบบที่เห็นได้ชัดเจนกว่า สำหรับการพัฒนาในเครื่อง, นักพัฒนา Elixir มักพึ่งพาฟังก์ชันของ Logger ที่มีอยู่เนื่องจากความเรียบง่ายและการบูรณาการกับ BEAM VM

ภายใต้ฝา, โมดูล Logger ให้บริการการ Logging แบบอะซิงโครนัสและซิงโครนัส การ Logging แบบอะซิงโครนัส, ซึ่งเป็นค่าเริ่มต้น, ไม่ให้การทำงานของแอปพลิเคชันของคุณถูกรบกวนในระหว่างการบันทึกข้อความ นี่ช่วยให้ระบบ Logging ไม่ส่งผลกระทบต่อประสิทธิภาพอย่างเป็นลบ อย่างไรก็ตาม, การ Logging แบบซิงโครนัสสามารถเปิดใช้งานได้ในกรณีที่คุณต้องการรับรองว่าข้อความถูกบันทึกตามลำดับที่ถูกส่ง

การตั้งค่า Logger สามารถปรับให้เหมาะสมในไฟล์ config/config.exs ของแอปพลิเคชัน Elixir, ที่คุณสามารถตั้งค่าระดับการ Logging, รูปแบบ, เมตาดาต้า, และอื่นๆ อย่าลืมปรับระดับการ Logging และส่งออกสำหรับสภาพแวดล้อมที่ต่างกัน; คุณคงไม่ต้องการให้บันทึกการ Debug ที่ละเอียดยิบปรากฏในระบบการผลิตของคุณ

ดูเพิ่มเติม: