Timber เป็นกรอบการบันทึกน้ำหนักเบาที่เขียนด้วย Swift มันเป็นนักแสดงที่มีประสิทธิภาพมากและดำเนินการตามการบันทึกทั้งหมดออกไปจากเธรดหลักทำให้มั่นใจได้ว่า UI หรือการดำเนินการอื่น ๆ ยังคงไม่ได้รับผลกระทบ
ไม้ก็มีความยืดหยุ่นอย่างบ้าคลั่ง มันมีคลาส LogFormat
ซึ่งช่วยให้คุณสามารถระบุวิธีการบันทึกข้อความควรมีรูปแบบและรวมถึงรูปแบบวันที่ที่กำหนดเองและข้อมูลต่าง ๆ ที่เกี่ยวข้องกับไฟล์ที่ข้อความบันทึกถูกดำเนินการในเช่นไฟล์ชื่อไฟล์ฟังก์ชันและบรรทัด
Timber ยังให้วิธีการย้ายบันทึกของคุณออกจากคอนโซลโดยการจัดหาท่อของคุณเองเพื่อจัดเก็บข้อความบันทึกที่อื่นเช่นในไฟล์หรือบนเซิร์ฟเวอร์ของคุณเอง
Timber ให้คุณระบุระดับบันทึกสำหรับไฟล์ใด ๆ/ทั้งหมด ตัวอย่างเช่นคุณต้องการปิดใช้งานการบันทึกคำขอเครือข่ายในขณะที่ทดสอบคุณสมบัติแยกต่างหากโดยการโทร Logger.registerMinLevel(.None)
ในคลาสเครือข่ายของคุณคุณสามารถปิดการใช้งานข้อความบันทึกจากการส่งออก
เพียงเพิ่มสิ่งต่อไปนี้ลงใน PodFile ของคุณ โปรดทราบว่าชื่อของ Cocoapod เป็น TimberSwift
และไม่ใช่ Timber
pod 'TimberSwift'
โคลนที่เก็บและเพิ่มไฟล์ทั้งหมดที่พบใน /ไม้ /คลาสลงในโครงการของคุณ
ขอแนะนำให้คุณทำการทดสอบหน่วยก่อนที่จะรวมไม้เข้ากับโครงการของคุณ สิ่งนี้สามารถทำได้โดยการทำสิ่งต่อไปนี้ในไดเรกทอรีรากของไม้ โปรดตรวจสอบให้แน่ใจว่าคุณติดตั้ง Bundler และหากไม่เรียกใช้ gem install bundler
ก่อน
$ bundle install
$ make test
Logger . registerMinLevel ( . Error ) // Set the log-level for the current file if needed
Logger . debug ( " This will not be logged as the debug log level is < error " )
Logger . error ( " Oh dear... An error occurred: ( some_error ) " )
Logger . info ( " The network request succeeded with status code ( status code ) " )
Logger . warn ( " The network response contains some unexpected data " )
// etc...
ในการแทนที่รูปแบบบันทึกเริ่มต้นที่ใช้โดยไม้ซึ่งเป็น [Level Date Filename:Line] Message
คุณต้องยกตัวอย่าง LogFormat
ของคุณเองก่อนและส่งผ่านไปยัง Logger
ทั่วโลกหรือของคุณเอง
let logFormat = LogFormat ( template : " [%@ %@ %@:%@] %@ " , attributes : [
LogFormatter . Attributes . Level ,
LogFormatter . Attributes . Date ( format : " HH:mm:ss " ) ,
LogFormatter . Attributes . FileName ( fullPath : false , fileExtension : true ) ,
LogFormatter . Attributes . Line ,
LogFormatter . Attributes . Message
] )
// Attach it to the global Logger
Logger . setFormat ( logFormat )
// Or attach it to your own logger
someLogger . logFormat = logFormat
// Or pass it in when you instantiate your logger
let someLogger = Logger ( minLevel : . All , logFormat : logFormat )
ไม้ได้รับการบันทึกไว้อย่างสมบูรณ์และสามารถดูได้ที่ http://maxkramer.github.io/timber/
ดังที่ได้กล่าวไว้ใน logger+loglevels.swift เราใช้ลำดับความสำคัญของบันทึกเดียวกับ log4j ของ Apache IS ดังนี้:
ALL < DEBUG < TRACE < INFO < WARN < ERROR < FATAL < OFF.
ดังนั้นคำขอบันทึกของระดับ P ในเครื่องบันทึกที่มีระดับ Q จึงเปิดใช้งานหาก P> = Q
ระดับ | คำอธิบาย |
---|---|
ทั้งหมด | ทุกระดับรวมถึงระดับที่กำหนดเอง |
การดีบัก | กำหนดกิจกรรมที่ให้ข้อมูลอย่างละเอียดซึ่งมีประโยชน์มากที่สุดในการดีบักแอปพลิเคชัน |
ข้อผิดพลาด | กำหนดเหตุการณ์ข้อผิดพลาดที่อาจอนุญาตให้แอปพลิเคชันทำงานต่อไป |
ร้ายแรง | กำหนดเหตุการณ์ข้อผิดพลาดที่รุนแรงมากซึ่งน่าจะนำไปสู่แอปพลิเคชันที่จะยกเลิก |
ข้อมูล | กำหนดข้อความข้อมูลที่เน้นความคืบหน้าของแอปพลิเคชันในระดับหยาบ |
ปิด | อันดับสูงสุดที่เป็นไปได้และมีจุดประสงค์เพื่อปิดการบันทึก |
ติดตาม | กำหนดกิจกรรมที่ให้ข้อมูลที่ละเอียดกว่าการดีบัก |
เตือน | กำหนดสถานการณ์ที่อาจเป็นอันตราย |
สายตา:
การอ้างอิง: หน้าสถาปัตยกรรมของ Log4J