CocoaLumberjack
CocoaLumberjack 是一款快速、简单、强大的且灵活的日志框架,适用于 macOS、iOS、tvOS 和 watchOS。
如何开始
首先,通过 CocoaPods、Carthage、Swift 包管理器 或手动方式安装 CocoaLumberjack。然后使用 DDOSLogger
(适用于 iOS 10 及以上版本)开始日志记录消息,或使用 DDTTYLogger
和 DDASLLogger
(适用于早期版本)。
CocoaPods
platform :ios, '11.0'
target 'SampleTarget' do
use_frameworks!
pod 'CocoaLumberjack/Swift'
end
注意:Swift
是一个子规范,它将包含所有 Objective-C 代码以及 Swift 代码,因此这已经足够了。有关如何在 Lumberjack 中使用 Swift 的更多详细说明,请参阅 此对话。
对于 Objective-C,请使用以下示例:
platform :ios, '11.0'
target 'SampleTarget' do
pod 'CocoaLumberjack'
end
Carthage
Carthage 是 Swift 和 Objective-C 的轻量级依赖管理器。它利用 CocoaTouch 模块,相比 CocoaPods 更加侵入性小。
要用 Carthage 安装,请遵循 Carthage 的说明。
Cartfile
github "CocoaLumberjack/CocoaLumberjack"
Swift Package Manager
自 CocoaLumberjack 3.6.0 版本起,您可以使用 Swift Package Manager 作为集成方法。如果您想使用 Swift Package Manager 作为集成方法,可以使用 Xcode 添加包依赖项,或者在您的 Package.swift 中添加以下依赖项:
.package(url: "https://github.com/CocoaLumberjack/CocoaLumberjack.git", from: "3.8.0"),
请注意,您可能需要将产品 CocoaLumberjack
和 CocoaLumberjackSwift
都添加到您的目标中,因为 SPM 有时无法检测到 CocoaLumberjackSwift
依赖于 CocoaLumberjack
。
手动安装
如果您想手动安装 CocoaLumberjack,请查看关于手动安装的指南 (请将 URL 替换为实际的指南地址)。
Swift 用法
通常,您只需简单地 import CocoaLumberjackSwift
。如果您使用 CocoaPods 安装了 CocoaLumberjack,则需要使用 import CocoaLumberjack
。
DDLog.add(DDOSLogger.sharedInstance) // Uses os_log
let fileLogger: DDFileLogger = DDFileLogger() // File Logger
fileLogger.rollingFrequency = 60 * 60 * 24 // 24 hours
fileLogger.logFileManager.maximumNumberOfLogFiles = 7
DDLog.add(fileLogger)
...
DDLogVerbose("Verbose")
DDLogDebug("Debug")
DDLogInfo("Info")
DDLogWarn("Warn")
DDLogError("Error")
Obj-C 用法
如果您将 Lumberjack 作为框架使用,可以使用 @import CocoaLumberjack;
。否则,请使用 #import <CocoaLumberjack/CocoaLumberjack.h>
[DDLog addLogger:[DDOSLogger sharedInstance]]; // Uses os_log
DDFileLogger *fileLogger = [[DDFileLogger alloc] init]; // File Logger
fileLogger.rollingFrequency = 60 * 60 * 24; // 24 hour rolling
fileLogger.logFileManager.maximumNumberOfLogFiles = 7;
[DDLog addLogger:fileLogger];
...
DDLogVerbose(@"Verbose");
DDLogDebug(@"Debug");
DDLogInfo(@"Info");
DDLogWarn(@"Warn");
DDLogError(@"Error");
Objective-C ARC 语义问题
当将 Lumberjack 集成到现有的 Objective-C 项目中时,可能会遇到 发现多个名称为 'tag' 的方法,结果、参数类型或属性不匹配
的编译错误。
在导入 CocoaLumberjack 之前添加 #define DD_LEGACY_MESSAGE_TAG 0
,或者在您的 Xcode 项目的 其他 C 标志/OTHER_CFLAGS 中添加 或
-DDD_LEGACY_MESSAGE_TAG=0
。
swift-log 后端
CocoaLumberjack 还提供了 swift-log 的后端实现。只需将 CocoaLumberjack 作为依赖项添加到您的 SPM 目标(见上文),并将 CocoaLumberjackSwiftLogBackend
产品作为依赖项添加到您的目标。
您可以使用 DDLogHandler
作为 swift-log 的后端,这将所有消息转发到 CocoaLumberjack 的 DDLog
。您仍然可以通过 DDLog
配置想要使用的日志记录器和日志格式化程序,但编写日志信息将使用 swift-log 的 Logger
完成。
在您自己的日志格式化程序中,可以利用 DDLogMessage
上的 swiftLogInfo
属性来获取通过 swift-log 记录的消息的详细信息。
要使用 swift-log 与 CocoaLumberjack,请查看以下代码示例,了解如何开始使用。
import CocoaLumberjack
import CocoaLumberjackSwiftLogBackend
import Logging
// In your application's entry point (e.g. AppDelegate):
DDLog.add(DDOSLogger.sharedInstance) // Configure loggers
LoggingSystem.bootstrapWithCocoaLumberjack() // Use CocoaLumberjack as swift-log backend
更多信息
- 阅读 入门 指南,查看 常见问题解答 部分或其他 文档
- 如果您发现问题或建议改进,请创建问题或拉取请求
- 有关 CocoaLumberjack 的所有问题,请使用 Google 群组 或 StackOverflow(使用 #lumberjack)。
CocoaLumberjack 3
迁移到3.x
- 待定
功能
Lumberjack:快速、简单、功能强大且灵活。
它在概念上与log4j等其他流行的日志记录框架类似,但专为Objective-C设计,并利用了多线程、Grand Central Dispatch(如果可用)、无锁原子操作以及Objective-C运行时的动态性等功能。
Lumberjack:快速
在大多数情况下,它比NSLog快一个数量级。
Lumberjack:简单
当应用程序启动时,只需一行代码即可配置Lumberjack。然后只需将NSLog语句替换为DDLog语句即可。(DDLog宏的格式和语法与NSLog完全相同,因此非常容易。)
Lumberjack:功能强大
一个日志语句可以发送到多个日志记录器,这意味着您可以同时向文件和控制台进行记录。想了解更多?创建自己的日志记录器(很容易)并通过网络发送日志语句。或者发送到数据库或分布式文件系统。天空才是极限。
Lumberjack 是灵活的
按照您的需求配置日志。按文件更改日志级别(适用于调试)。按日志记录器更改日志级别(详细的控制台输出,但简洁的日志文件)。按 Xcode 配置更改日志级别(详细的调试输出,但简洁的发布输出)。在发布构建中将日志语句编译出来。为您的应用自定义日志级别数量。添加您自己的细粒度日志。在运行时动态更改日志级别。选择您想要滚动日志文件的时机。将日志文件上传到中央服务器。压缩归档日志文件以节省磁盘空间...
此框架适用于您,如果
- 您正在寻找一种方法来追踪在野外不断出现且难以复现的bug。
- 您对 iPhone 上极短的控制台日志感到沮丧。
- 您想将应用的支持和稳定性提升到下一个级别。
- 您正在寻找为应用(Mac 或 iPhone)的企业级日志解决方案。
文档
- 开始使用 Lumberjack
- 调试和发布构建的不同日志级别
- 每个日志记录器的不同日志级别
- 在 Xcode 调试控制台中使用颜色
- 编写您自己的自定义格式化程序
- 常见问题解答
- 基准测试的性能分析
- 您可能遇到的常见问题和解决方案
- AppCode 支持
- 完整的 Lumberjack 文档
要求
Lumberjack 当前版本需要
- Xcode 14.1 或更高版本
- Swift 5.5 或更高版本
- macOS 10.13 或更高版本
- iOS 11 或更高版本
- tvOS 11 或更高版本
- watchOS 4 或更高版本
向后兼容性
- 对于Xcode 12和Swift至5.4,使用3.7.4版本
- 对于Xcode 11和Swift至5.2,使用3.6.2版本
- 对于Xcode 10和Swift 4.2,使用3.5.2版本
- 对于iOS 8,使用3.6.1版本
- 对于iOS 6、iOS 7、OS X 10.8、OS X 10.9和Xcode 9,使用3.4.2版本
- 对于iOS 5和OS X 10.7,使用3.3版本
- 对于Xcode 8和Swift 3,使用3.2版本
- 对于Xcode 7.3和Swift 2.3,使用2.4.0版本
- 对于Xcode 7.3和Swift 2.2,使用2.3.0版本
- 对于Xcode 7.2和7.1,使用2.2.0版本
- 对于Xcode 7.0或更早版本,使用2.1.0版本
- 对于Xcode 6或更早版本,使用2.0.x版本
- 对于OS X小于10.7的支持,使用1.6.0版本
通讯
- 如果您需要帮助,请使用Stack Overflow。(标签'password')
- 如果您想提问一般问题,请使用Stack Overflow。
- 如果您发现了一个错误,请提交一个问题。
- 如果您有功能建议,请提交一个问题。
- 如果您想要贡献,请提交合并请求。
数据收集惯例
根据App Store中的App隐私详情,苹果要求应用开发者提供他们的数据收集信息,SDK维护者必须提供相同的信息。
框架的数据收集
默认情况下,CocoaLumberjack不自己收集任何数据。
通过框架进行间接数据收集
CocoaLumberjack是一个日志框架,它使得将这些日志发送到不同的平台变得容易。
这就是为什么如果应用开发者将任何敏感数据包括在日志消息中,收集数据可能相当容易。
重要提示:由开发者完全负责通过我们的日志系统收集的任何敏感数据!
因此,必须遵守苹果的隐私详细政策(上面提及),并记录用户数据收集的方式。由于可能通过CocoaLumberjack间接收集数据的场景数量很大,作为应用开发者,您必须正确审查您的应用代码并识别这些情况。我们可以做到的是,通过我们的框架提高人们对潜在数据收集的意识。
私人数据包括但不限于
- 用户信息(姓名、电子邮件、地址等)
- 位置信息
- 联系人
- 标识符(用户ID、设备ID等)
- 应用使用数据
- 性能数据
- 健康和健身信息
- 财务信息
- 敏感信息
- 用户内容
- 历史记录(浏览、搜索等)
- 购买
- 诊断
- ...
示例:使用DDLogInfo("用户:\(myUser)")
将myUser
信息添加到日志中,如果这些内容转发给第三方或通过电子邮件发送,则可能被视为数据收集。
作者
- Robbie Hanson
- 喜欢这个项目?想要给我买杯咖啡吗?(或者啤酒:D)
合作者
- Ernesto Rivera
- Dmitry Vorobyov
- Bogdan Poplauschi
- C.W. Betts
- Koichi Yokota (sushichop)
- Nick Brook
- Florian Friedrich
- Stephan Diederich
- Kent Sutherland
- Dmitry Lobanov
- Hakon Hanesand
授权
- CocoaLumberjack是以BSD 3授权协议发布的。请参阅授权文件。
扩展
- BugfenderSDK-CocoaLumberjack - CocoaLumberjack的Bugfender日志记录器
- LogIO-CocoaLumberjack - CocoaLumberjack的log.io日志记录器
- XCDLumberjackNSLogger - 将日志发送到NSLogger的CocoaLumberjack日志记录器