速记员
速记员是一个构建于简单启动、高效执行、安全发布代码和灵活扩展的日志框架。它用纯 Swift 编写,适用于 macOS、iOS、tvOS 和 watchOS 应用程序的日志。对于寻求比 print()
更强大功能的开发者,速记员只需要一点时间就可以开始使用,并准备将日志记录在控制台、文件、HTTP 服务或所有三者中。需要记录到其他位置?定义自己的端点也很简单。
速记员是 LogKit 的分支。
内容
功能
- 简单设置
- 详细文档[文档]
- 内置控制台、文件和 HTTP [端点][endpoints]
- 每个端点优先级过滤
- 每个端点的完整日志条目 [格式定制][formatting]
- 通过简单协议遵循定义自定义端点
需求
- 针对 macOS 10.9+、iOS 7+、tvOS 9+ 或 watchOS 2+ 的项目
- Xcode 7.3 和 Swift 2.2
安装
安装 Stenographer 有几种方法。下面提供一些提示,但更多详细信息请参阅[安装指南][install]。
注意:由于某种原因,CocoaPods 会从他们网站上显示的此 readme 中删除关于 CocoaPods 和 Carthage 的安装说明。如果您看不到这些安装选项,请访问[安装指南][install]。
CocoaPods
支持 iOS 8+、macOS 10.9+、tvOS 9+、watchOS 2+
在您的 Podfile 中包含 Stenographer
use_frameworks!
pod 'Stenographer', '~> 2.3'
有关 CocoaPods 入门信息的更多资料,请阅读指南。
Carthage
支持 iOS 8+、macOS 10.9+、tvOS 9+、watchOS 2+
在您的 Cartfile 中包含 Stenographer
github "logkit/logkit" ~> 2.3
有关 Carthage 入门信息的更多信息,请访问repo。
嵌入式框架
支持 iOS 8+、macOS 10.9+、tvOS 9+、watchOS 2+
将 Stenographer.xcodeproj
包含在您的项目(在项目根目录下二级,作为一个子项目)。选择您的目标,然后在“常规”选项卡中将 Stenographer 作为嵌入式二进制文件添加。选择适用于您目标操作系统适当的 Stenographer 框架。务必选择框架,而不是测试。
来源
支持 iOS 7+、macOS 10.9+、tvOS 9+、watchOS 2+
将 Stenographer 源代码集成是的唯一方法,以便将 Stenographer 包含到针对 iOS 7 的项目中。使用此安装方法时,请跳过
import Stenographer
。
将 Sources
目录中找到的所有 .swift
文件添加到您的项目中。安装过程中不需要其他步骤。
使用方法
Stenographer 很容易开始使用。所有内容都带有方便的初始化器,它们的参数要求最简(通常不需要参数)并提供了合理的默认值。快速入门,然后根据需要稍后进行定制。
使用下面的快速入门来立即开始,然后查看[使用指南][usage],详细了解 Stenographer 可以做什么。
快速入门
在您的 AppDelegate.swift
文件顶部附近,添加以下两行
import Stenographer
let log = SXLogger()
这会将 Stenographer 框架导入并创建一个全局的 Logger 实例。此 Logger 将使用标准控制台端点以默认格式记录所有消息进行初始化。由于 Logger 实例是在全局范围内创建的,您应该只创建一次(在 AppDelegate.swift
中是最佳位置)。
现在您可以在项目的任何地方进行记录
log.info("Hello Internet!")
// 2015-06-25 07:36:01.638000 [INFO] applicationDidFinishLaunching <AppDelegate.swift:23> Hello Internet!
现在您正在记录!您可以使用 debug
、info
、notice
、warning
、error
和 critical
Logger 方法。
附加端点
如果您希望同时将日志记录到文件和控制台,并且希望文件只接收 notice
及以上的日志条目,您可以将您的日志器配置如下
import Stenographer
let log = SXLogger(endpoints: [
SXConsoleEndpoint(),
SXFileEndpoint(
fileURL: NSURL(string: /* Path to your log file */),
minimumPriorityLevel: .Notice
),
])
您可以添加和配置所需数量的[端点][endpoints],例如包括的 File 和 HTTP 服务端点。您还可以完全[自定义格式][formatting],其中日志条目被写入每个端点。
格式化
每个端点都有一个名为 dateFormatter
的属性,用于控制条目的 dateTime
属性的格式化方式。它接受一个 SXDateFormatter
实例,通常在初始化时设置。
let log = SXLogger(endpoints: [
SXConsoleEndpoint(
dateFormatter = SXDateFormatter(formatString: "HH:mm:ss.SSS")
),
])
每个端点还有一个名为 entryFormatter
的属性,用于控制如何将条目转换为字符串用于输出。它接受一个 SXEntryFormatter
实例,通常也在初始化时设置。
let log = SXLogger(endpoints: [
SXConsoleEndpoint(
entryFormatter = SXEntryFormatter({ entry in
return "\(entry.dateTime) [\(entry.level.uppercaseString)] \(entry.message)"
})
),
])
有关格式化的详细信息、可用的日志条目属性以及 SXEntryFormatter
,请参阅[条目格式化文档][formatting]。
贡献
Stenographer 欢迎贡献。
许可证
Stenographer 在宽松的 ISC 许可证 下授权。