也谈 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

相关文章
相关标签/搜索