Haskell:
การบันทึกล็อก
วิธีการ:
ใน Haskell, สามารถเขียนการบันทึกได้โดยใช้ไลบรารีเช่น monad-logger
หรือ hslogger
นี่คือตัวอย่างเร็วๆ โดยใช้ monad-logger
:
{-# LANGUAGE OverloadedStrings #-}
import Control.Monad.Logger
import Control.Monad.IO.Class (liftIO)
logExample :: LoggingT IO ()
logExample = do
logInfoN "เริ่มต้นแอปพลิเคชัน..."
liftIO $ putStrLn "ทำงานสำคัญบางอย่าง..."
logErrorN "อุ๊ปส์! เกิดข้อผิดพลาดบางอย่าง."
main :: IO ()
main = runStdoutLoggingT logExample
{- ผลลัพธ์ตัวอย่าง
[Info] เริ่มต้นแอปพลิเคชัน...
ทำงานสำคัญบางอย่าง...
[Error] อุ๊ปส์! เกิดข้อผิดพลาดบางอย่าง.
-}
ตัวอย่างง่ายๆ นี้แสดงให้เห็นว่าคุณสามารถแทรกการบันทึกสถานะไว้ทั่วโค้ดเพื่อรับข้อมูลเชิงลึกเกี่ยวกับสิ่งที่กำลังเกิดขึ้นในระหว่างเวลาทำงาน logInfoN
และ logErrorN
ถูกใช้เพื่อบันทึกข้อความที่เกี่ยวกับข้อมูลและข้อผิดพลาดตามลำดับ
ศึกษาลึกลงไป:
การบันทึกมีการพัฒนาไปจากการใช้คำสั่งพิมพ์ง่ายๆ เป็นกรอบงานการบันทึกที่ซับซ้อน ในอดีต, บันทึกเป็นเพียงข้อความขาออกไปยังคอนโซลหรือไฟล์ แต่ตอนนี้มีข้อมูลที่ถูกโครงสร้างที่สามารถวิเคราะห์ได้โดยเครื่องมือต่างๆ
ใน Haskell, การบันทึกสามารถทำได้ในรูปแบบที่บริสุทธิ์โดยการส่งการกระทำการบันทึกโดยเฉพาะหรือการใช้บริบทมุมของการถูกไม่บริสุทธิ์ ซึ่งบันทึกจะถูกฟังก์ชันในการคำนวณอย่างคลุมเครือ
ไลบรารี hslogger
, ตัวอย่างเช่น, มีลักษณะแบบดั้งเดิมและสามารถเปลี่ยนแปลงได้เมื่อเปรียบเทียบกับ monad-logger
monad-logger
มีการรวมกับสแต็กมอนาดและเสนอความยืดหยุ่นมากขึ้นเกี่ยวกับการจัดรูปแบบและการควบคุมการออก ทั้งสองไลบรารีช่วยให้คุณสามารถตั้งค่าระดับบันทึกซึ่งช่วยในการกรองข้อความบันทึกตามความสำคัญ ระดับบันทึกประกอบด้วย debug, info, notice, warning, error, critical, alert และ emergency
การบันทึกของ Haskell มักจะสอดคล้องกับความสำคัญที่มีต่อความปลอดภัยของประเภทและความบริสุทธิ์ บันทึกสามารถจัดการในลักษณะที่แม้แต่ถ้าการบันทึกล้มเหลว ก็ไม่ก่อให้เกิดการล่มสลายของแอปพลิเคชันหลักเนื่องจากความสามารถในการจัดการข้อผิดพลาดอย่างแข็งแกร่งของ Haskell