NSLogger
NSLogger 是一个高性能的日志工具,可以在运行在 macOS、iOS 和 Android 上的客户端应用程序中显示跟踪。它取代了传统的控制台日志跟踪 (NSLog(),Java Log)。
NSLogger 观察器 在 macOS 上运行,取代了 Xcode、Android Studio 或 Eclipse 控制台。它提供了诸如显示过滤器、定义日志域和级别、图像和二进制日志、消息着色、跟踪缓冲、计时信息、与源代码链接等功能。
NSLogger 功能概述
- 使用桌面应用程序查看日志
- 日志可以来自设备或模拟器
- 接受来自本地网络客户端(使用 Bonjour)或直接通过互联网连接的远程客户端的连接
- 在线(应用程序运行并连接到 NSLogger)和离线(保存日志)日志查看
- 在内存或文件中将所有跟踪保存到缓冲区,在获得连接时将它们发送到观察器
- 定义一个日志域(应用、视图、模型、控制器、网络等)和一个重要性级别(错误、警告、调试、噪声等)
- 使用正则表达式着色日志消息
- 日志图像或原始二进制数据
- 安全日志(默认使用 SSL 进行连接)
- 高级日志过滤选项
- 将观察器日志保存下来以便以后共享和/或审查
- 将日志导出到文本文件
- 打开来自未直接连接到日志观察器的客户端应用程序的原始缓冲跟踪文件
以下是它在实际操作中的样子
以及与 macOS Mojave 及以后的暗黑模式一起展示
基本用法
无需更改您的代码,您应用程序的所有 NSLog()
日志都会自动重定向到 NSLogger 桌面观察器。观察器将自动在您的网络上通过 Bonjour 找到。
一个丰富的API允许你以许多详细的方式记录消息、二进制数据或图像。提供了简单封装以方便使用。
Swift 封装API
import NSLogger
[…]
// logging some messages
Logger.shared.log(.network, .info, "Checking paper level…")
// logging image
Logger.shared.log(.view, .noise, myPrettyImage)
// logging data
Logger.shared.log(.custom("My Domain"), .noise, someDataObject)
Objective-C 封装API
#import <NSLogger/NSLogger.h>
[…]
LoggerApp(1, @"Hello world! Today is: %@", [self myDate]);
LoggerNetwork(1, @"Hello world! Today is: %@", [self myDate]);
安装
- 步骤1. 在您的Mac上下载 NSLogger桌面应用程序。
- 步骤2. 将 NSLogger框架 添加到您的项目中。
- 步骤3. 没有第3步...
桌面查看器下载
下载预构建、已签名的NSLogger桌面查看器适用于macOS。别忘了在您的Mac上启动应用程序。如果没有客户端连接并开始记录,它不会显示窗口。
客户端框架安装
CocoaPods安装
如果您的项目配置为使用 CocoaPods,只需将此行添加到您的 Podfile
pod "NSLogger"
以上仅包括C和Obj-C API,适用于不包含任何Swift代码的应用程序。使用 Swift
子规范添加了Swift语法的糖API。如果您在Swift或Swift/Obj-C混合环境中开发代码,请使用
pod "NSLogger/Swift"
请注意,您不需要在Swift应用程序中严格包括 /Swift
变异体。您完全可以开发自己的扩展,调用NSLogger的C API,而不使用基本提供的API。
最后,如果您正在使用可能使用NSLogger的框架或库,则可以使用 NoStrip
变体,该变体强制链接器保持所有NSLogger函数在最终的构建中,即使您的代码不使用这些函数。由于链接入的框架可能会动态检查NSLogger函数的存在,因此这是必需的,因为链接器不会看到这种用法。
pod "NSLogger/NoStrip"
Carthage 安装
NSLogger 与 Carthage 兼容。它构建了两个框架:`NSLogger` 和 `NSLoggerSwift`。您需要选择其中之一(但不能同时选择两个)以在其应用程序中使用。两者都可以与 Swift 一起使用,`NSLoggerSwift` 变体添加了一个简单的 Swift 层,使从 Swift 代码中更容易使用 NSLogger。您可以在不使用提供的简单示例的情况下开发自己的扩展,这些扩展可以调用 NSLogger 的 C APIs,只需使用 `NSLogger` 框架。
根据您选择的框架,您的代码需要导入 `NSLogger` 或 `NSLoggerSwift`。这与 Cocoapods 支持不同,那里您始终导入 `NSLogger`。
github "fpillet/NSLogger"
然后运行
$ carthage update
同样,`NSLogger.xcodeproj` 最高级项目提供了两个目标(《NSLogger》和《NSLoggerSwift》)。添加适合您需要的构建框架。
高级使用
在共享网络上使用 NSLogger
NSLogger 发送的第一条日志将启动日志记录器,默认情况下是在遇到的第一个 Bonjour 服务上。但是当多个 NSLogger 用户共享相同的网络时,日志连接可能会混乱。
为了避免用户之间的混淆,只需在应用启动时添加此内容(例如,在 `applicationDidFinishLaunching` 方法中)
LoggerSetupBonjourForBuildUser();
然后,在 NSLogger.app 桌面查看器的《首选项》窗格中,转到《网络》选项卡。在“Bonjour 服务名称”文本框中输入您的用户名(例如,`$USER`)。
这将允许只有编译应用程序的用户接收痕迹。
此功能仅当使用 CocoaPods 将 NSLogger 添加到您的项目中时才有效.
手动框架安装
当使用 NSLogger 并且不带 Cocoapods 时,将 `LoggerClient.h`、`LoggerClient.m` 和 `LoggerCommon.h`(以及添加 `CFNetwork.framework` 和 `SystemConfiguration.framework` 框架)添加到您的 iOS 或 macOS X 应用程序中,然后使用 `LogMessageCompat()` 调用替换 `NSLog()` 调用。我们建议使用宏,这样您就可以在构建应用程序的分发版本时关闭日志。
连接是如何工作的?
为了自动发现桌面查看器,您的应用程序必须运行在与您的Mac同一网络上的设备上。当您的应用程序开始记录时,NSLogger框架默认情况下会自动使用Bonjour寻找桌面查看器。一旦开始接收跟踪,您的Mac上就会打开一个新窗口。
高级用户可以设置远程主机/端口(从客户端记录到特定主机),或者在网络上存在多个查看器时指定Bonjour名称。
高级桌面查看器功能
桌面查看器应用程序提供了以下工具
- 过滤器(使用正则表达式匹配),让您在日志中进行数据挖掘
- 计时信息:每个消息在过滤显示中显示与前一个消息的时间差,因此您可以了解应用程序中事件之间的时间。
- 将图像和二进制数据直接显示在日志窗口中
- 标记(当客户端连接时,在日志的末尾放置标记,以便清楚地看到之后发生的事情,例如在应用程序中按钮按下之前放置标记)
- 快速在日志中进行导航
- 显示和导出所有日志为文本
- 可选显示文件、行和功能,以实现无杂乱显示
您的日志可以保存到.nsloggerdata
文件中,并稍后重新加载。在记录到文件时,请以.rawnsloggerdata
扩展名命名日志文件,以便NSLogger可以重新打开和处理它。您可以让客户端远程生成原始日志数据文件,然后将它们发送给您,以便您进行调查。
请注意,NSLogger Mac OS X查看器需要Mac OS X 10.6或更高版本。
高级颜色配置
使用正则表达式将颜色应用于标签和消息。
为了定义颜色,您可以使用
- 标准NSColor名称,例如:
blue
- 十六进制颜色,例如:
#DEAD88
- 您可以添加前缀
bold
,例如:bold red
高性能,低开销
致谢
NSLogger版权所有(c)2010-2018 Florent Pillet,保留所有权利,纠正一切错误。在新BSD许可证下发布。NSLogger图标版权所有(c)