CocoaLumberjack 是一个 iOS 的框架。
本项目提供了一种方法,可以将 CocoaLumberjack 项目轻松集成到您自己的项目中,通过提供您可以直接添加的静态库框架而不是直接添加源代码的方式来提供。它还提供了一个简单的机制来使用类级的日志记录,类似于尊贵的 log4j 在 Java 中提供的。
示例用法
首先,为了最简单地集成日志记录,向您的 PCH 中添加 BRCocoaLumberjack.h
,像这样
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <BRCocoaLumberjack/BRCocoaLumberjack.h>
#endif
然后,您必须在应用程序生命周期的早期配置日志系统。在 main()
中如何?
int main(int argc, char *argv[]) {
@autoreleasepool {
#ifdef LOGGING
BRLoggingSetupDefaultLogging();
#endif
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
注意 #ifdef LOGGING
。除非您定义此宏,否则低于 ERROR 级别的日志记录将不会被启用。将 LOGGING=1
添加到您的 预处理器宏 构建设置中,可能仅针对 Debug 配置。
然后,当您想要在 Objective-C 中记录某些内容时,可以使用方便的宏 log4X
或 DDLogX
,其中 X
是 Error、Warn、Info、Debug 或 Trace 之一。例如
DDLogDebug(@"Hi there, from %@", NSStringFromClass([self class]));
log4Debug(@"Hi again, from %@", NSStringFromClass([self class]));
注意 DDLogDebug
和 log4Debug
产生相同的结果,它们只是两种不同的风格来实现相同的功能,类似于这样
DEBUG 08162039:19.307 c07 ViewController.m:23 viewWillAppear:| Hi there, ViewController
世界喜欢多样性,而 DDLog
风格来自 CocoaLumberjack,而 log4
来自 log4cocoa 项目(如果您来自那个世界,它们更类似于 log4j)。
日志输出使用默认格式器,如下所示
- 日志级别 - DEBUG
- 时间戳 - 08162039:19.307,这是 MMddHHmm:ss.SSS 格式,即 08 月 16 日 20:39:19.307
- 线程 - c07
- 文件名和行号 - ViewController.m:23
- 方法名 - viewWillAppear:
- 管道 - |
- 消息 - Hi there, ViewController
日志配置
BRLoggingSetupDefaultLogging()
函数默认将配置 INFO 级别的日志。它还会在您的应用程序主包中搜索名为 LocalEnvironment.plist
的文件,其中应包含一个在键 logging
上有一个字典的字典。该 logging
字典可以包含特殊键 default
来设置默认日志级别,可以是 error
、warn
、info
、debug
或 trace
中的一个。
此外,可以通过向 logging
字典中添加更多键来配置类级别的日志,键名为您要配置的类的名称。类也会继承其父类的配置日志级别,这使得您可以通过在层次结构的根处设置日志级别来配置整个类层次结构。
例如,以下配置默认级别为 warn
,类 AppDelegate
(及其任何子类)将使用 debug
级别
<plist version="1.0">
<dict>
<key>logging</key>
<dict>
<key>default</key>
<string>warn</string>
<key>AppDelegate</key>
<string>debug</string>
</dict>
</dict>
</plist>
项目集成
您可以通过 CocoaPods 或手动作为依赖项目或静态框架进行整合。
通过 CocoaPods
如果尚未安装,请安装 CocoaPods
$ [sudo] gem install cocoapods
$ pod setup
切换到 Xcode 项目的目录,并创建一个名为 Podfile
的文件,其内容类似于以下示例
platform :ios, '5.0'
pod 'BRCocoaLumberjack', '~> 1.8.1'
将它们安装到您的项目中
$ pod install
使用 CocoaPods 生成的 .xcworkspace 文件在 Xcode 中打开您的项目。
Pod 日志
请注意,由于 BRCocoaLumberjack 禁用了除了 Error
级别以外的所有日志,除非定义了预处理宏 LOGGING=1
,因此包含在您的应用程序项目中的其他使用 BRCocoaLumberjack 的 Pod 不会按默认值执行任何日志记录,因为生成的 Pods.xcodeproj 不会定义该宏。您可以通过将以下内容添加到您的 Podfile
中来解决这个问题
post_install do |installer|
installer.pods_project.build_configurations.each do |config|
if config.name == 'Debug'
# for Debug, add LOGGING=1 macro to support BRCocoaLumberjack logging within pods themselves
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)', 'DEBUG=1']
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] |= ['LOGGING=1']
end
end
end
这将基本上将 LOGGING=1
添加到 Pod 项目的 Debug 配置中。
通过静态框架
使用这种方法,你将构建一个静态库框架,你可以手动将其集成到自己的项目中。首先克隆BRCocoaLumberjack仓库,然后初始化git子模块。例如:
git clone [email protected]:Blue-Rocket/BRCocoaLumberjack.git
cd BRCocoaLumberjack
git submodule update --init
这将拉取相应的子模块,例如CocoaLumberjack。
BRCocoaLumberjack Xcode项目包括一个名为BRCocoaLumberjack.framework的目标,该目标构建一个静态库框架。构建此目标,它将在项目根目录下产生一个Framework/Release/BRCocoaLumberjack.framework
包。将该框架复制到你的项目中,并将其作为构建依赖项添加。
接下来,将-ObjC
添加为其他链接器标志构建设置。
最后,您可能需要将包含BRFullTextSearch.framework
包的目录路径添加到项目的构建设置标签中的框架搜索路径值。然而,Xcode可能会为您自动完成此操作。