2016 年 2 月 26 日更新:swiftlog
的 master
分支已經更新至 Swift 3.0 版本。github
Apple 發佈 Swift 不久,就有大量的開發者提供了日誌靜態庫,但 Lumberjack 這樣的好項目並不能在 Xcode 外執行。咱們開發了 swiftlog
,這是一個簡單的日誌記錄程序。swift
來看看 swiftlog
的更新內容,它主要爲 Linux 系統上的 Swift 應用提供快捷添加日誌信息的方法。它有如下新特性:app
Swift 包管理支持(SPM)框架
使用驚豔的 Rainbow
包輸出彩色日誌svg
支持寫入文件函數
咱們並不想把 swiftlog
變成一個複雜的框架,它只是一個很是簡單實用的包。工具
swiftlog
要使用 swiftlog
只需把如下代碼添加到你的 Package.swift
依賴中:ui
import PackageDescription let package = Package( name:"example", dependencies:[ .Package(url:"https://github.com/iachievedit/swiftlog", majorVersion:1) ] )
你能夠引入 swiftlog
來使用日誌記錄,經過全局變量 sLogLevel
(默認是 .None
即不使用日誌記錄)調整你須要的日誌等級。url
import swiftlog slogLevel = .Verbose SLogVerbose("A verbose log") SLogInfo("An info log") SLogWarning("A warning log") SLogError("An error log")
全部的日誌等級按重要程度從低到高排列輸出。日誌是彩色的:
很容易就能肯定你的 slogLevel
級別,不過爲了完整起見,這裏仍是列出全部級別:
.None
.Verbose
.Info
.Warning
.Error
此外,按照慣例還有兩個方法: ENTRY_LOG
和 EXIT_LOG
。這些「宏指令」用於追蹤函數進入和退出:
import swiftlog func multiply(multiplicand:Int, multiplier:Int) -> Int { ENTRY_LOG() let result = multiplicand * multiplier EXIT_LOG() return result } slogLevel = .Verbose SLogVerbose("A verbose log") SLogInfo("An info log") SLogWarning("A warning log") SLogError("An error log") SLogVerbose("10 times 10 equals \(multiply(10, multiplier:10))")
這樣就會有三條附加的日誌信息:
VERBOSE - ENTRY multiply(_:multiplier:) VERBOSE - EXIT multiply(_:multiplier:) VERBOSE - 10 times 10 equals 100
最後,咱們可使用 slogToFileAtPath
方法將日誌寫入文件。
import swiftlog func multiply(multiplicand:Int, multiplier:Int) -> Int { ENTRY_LOG() let result = multiplicand * multiplier EXIT_LOG() return result } slogLevel = .Verbose slogToFileAtPath("/tmp/log.txt", append:true) SLogVerbose("A verbose log") SLogInfo("An info log") SLogWarning("A warning log") SLogError("An error log") SLogVerbose("10 times 10 equals \(multiply(10, multiplier:10))")
slogToFileAtPath
的 append
參數能夠設置爲 false
,這會覆蓋文件以前的內容。
你能夠在 GitHub 上獲取源代碼。若是你不喜歡我選擇的這些日誌等級的顏色,動手修改吧!我可能會在接下來新的修改中提供更多定製的選項;到目前爲止,我在努力讓這個包使用起來很是簡單,並努力減小旋鈕(可配置項)的數量。
這個倉庫還有一個例子,在 logexample
目錄中。進入 logexample
並輸入 swift build
來編譯運行一下吧!
譯者注:
在 Linux 上使用 swiftlog
是一件很是簡單實用的工具,事實上咱們在 Xcode 開發中也能夠實現相似的功能。
文章開頭提到的 Lumberjack
就是不錯的選擇,此外咱們還可使用 XCGLogger
,這個更輕量簡潔一些。
我曾寫過一篇 打造一個愉快的 Swift Debug 控制檯,若是你喜歡用彩色的日誌來裝逼,這必定是你的菜。此外我還寫了一個很是簡單輕量的 RxSwift 的日誌擴展 RxLogger。使用起來很是方便,固然你也能夠參考這些來配置你喜歡或者符合你如今的業務需求的日誌工具,好比日誌白名單、過濾等功能。
多虧 jasl123 的提醒,我才意識到白名單是件很重要的事情,特別是在寫入文件的時候,必定要記得過濾掉隱私信息。
本文由 SwiftGG 翻譯組翻譯,已經得到做者翻譯受權,最新文章請訪問 http://swift.gg。