也談 Swift 日誌

做者:Joe,原文連接,原文日期:2016-01-23
譯者:DianQK;校對:numbbbbb;定稿:Ceegit

2016 年 2 月 26 日更新swiftlogmaster 分支已經更新至 Swift 3.0 版本。github

Swift 2.2Swift 3.0License ISC

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")

全部的日誌等級按重要程度從低到高排列輸出。日誌是彩色的:

Colored Logs!

很容易就能肯定你的 slogLevel 級別,不過爲了完整起見,這裏仍是列出全部級別:

  • .None

  • .Verbose

  • .Info

  • .Warning

  • .Error

此外,按照慣例還有兩個方法: ENTRY_LOGEXIT_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))")

slogToFileAtPathappend 參數能夠設置爲 false,這會覆蓋文件以前的內容。

源代碼

你能夠在 GitHub 上獲取源代碼。若是你不喜歡我選擇的這些日誌等級的顏色,動手修改吧!我可能會在接下來新的修改中提供更多定製的選項;到目前爲止,我在努力讓這個包使用起來很是簡單,並努力減小旋鈕(可配置項)的數量。

這個倉庫還有一個例子,在 logexample 目錄中。進入 logexample 並輸入 swift build 來編譯運行一下吧!


譯者注:

在 Linux 上使用 swiftlog 是一件很是簡單實用的工具,事實上咱們在 Xcode 開發中也能夠實現相似的功能。
文章開頭提到的 Lumberjack 就是不錯的選擇,此外咱們還可使用 XCGLogger ,這個更輕量簡潔一些。

我曾寫過一篇 打造一個愉快的 Swift Debug 控制檯,若是你喜歡用彩色的日誌來裝逼,這必定是你的菜。此外我還寫了一個很是簡單輕量的 RxSwift 的日誌擴展 RxLogger。使用起來很是方便,固然你也能夠參考這些來配置你喜歡或者符合你如今的業務需求的日誌工具,好比日誌白名單、過濾等功能。

多虧 jasl123 的提醒,我才意識到白名單是件很重要的事情,特別是在寫入文件的時候,必定要記得過濾掉隱私信息。
本文由 SwiftGG 翻譯組翻譯,已經得到做者翻譯受權,最新文章請訪問 http://swift.gg

相關文章
相關標籤/搜索