KFXLog
示例
要运行示例项目,克隆存储库,运行应用程序并点击一些按钮。
所有配置都在AppDelegate中设置,您可以通过修改配置属性来查看它们对格式的影响。
要求
iOS 8.2+
Xcode 7+
安装
KFXLog可通过CocoaPods使用。要安装它,只需在您的Podfile中添加以下行即可
pod "KFXLog"
简介
使用方法
配置
在调用任何KFXLog方法之前,应自定义KFXLogConfigurator。
-
获取KFXLogConfigurator单例的引用(不要使用 -init 初始化实例)。
KFXLogConfigurator *config = [KFXLogConfigurator sharedConfigurator];
-
自定义您想从默认值更改的任何全局设置
config.buildConfiguration = KFXBuildConfigurationDebug; config.consoleLogType = KFXConsoleLogTypeClean; config.debugLogMediums = KFXLogMediumConsole | KFXLogMediumFile | KFXLogMediumAlert; config.adHocLogMediums = KFXLogMediumFile | KFXLogMediumAlert; config.releaseLogMediums = KFXLogMediumFile | KFXLogMediumService; config.shouldLogUncaughtExceptions = NO;
-
自定义所需日志媒体的描述符(控制台、文件、警报、服务)
// Console Logs [config.cleanLogDescriptor configureWithLogFormat:KFXLogFormatFir]; config.cleanLogDescriptor.leadingNewLines = 0; // File Logs [config.fileLogDescriptor configureWithLogFormat:KFXLogFormatBirch]; config.fileLogDescriptor.split = KFXFileLogsSplitByBuild; // Alerts [config.alertLogDescriptor configureWithLogFormat:KFXLogFormatPine]; config.alertLogDescriptor.whitelist = KFXLogTypeError | KFXLogTypeFail | KFXLogTypeWarning; // Log to a service [config.serviceLogDescriptor configureWithLogFormat:KFXLogFormatBalsa];
-
如果您正在使用服务日志类,则创建其实例并在配置器上设置serviceLogger属性
config.serviceLogger = [DEMOServiceLogger serviceLogger];
-
如果您想打印设置摘要
[config printSettings];
日志记录
-
<KFXLog/KFXLog.h>
导入 -
日志记录
[KFXLog logInfoWithSender:self format:@"This is some info."]; [KFXLog logWarningWithSender:self format:@"This is a warning, warning, warning"]; [KFXLog logError:error withSender:self]; [KFXLog logWithCustomPrefix:@"<MESSAGE!!!>" sender:self format:@"This is a message"]; [KFXLog logSuccess:success withSender:self format:@"Log in successful?"];
架构
公共
- KFXLog
- KFXLogConfigurator
- KFXLoggerDefinitions
- KFXLogDescriptor
- KFXBasicLogDescriptor
- KFXFormattedLogDescriptor
- KFXCleanLogDescriptor
- KFXFileLogDescriptor
- KFXAlertLogDescriptor
- KFXServiceLogDescriptor
协议
- KFXLoggerInterface
- KFXServiceLoggerInterface (适用于实现服务日志记录,需要符合并实现)
辅助工具(如果您正在实现服务日志记录器可能有用)
- KFXLogFormatter
- KFXOptionsReader
用户界面
- KFXLogFilesMasterTVC
- KFXLogFileDetailVC
- KFXLogFileTVCell
内部
- KFXLogger
- KFXAlertLogger
- KFXConsoleLogger
- KFXFileLogger
线程
KFXLog的方法可以从任何线程安全地调用,但提供了一条简单的规则:
1. Make your customisations to KFXLogConfigurator before using any of the KFXLog methods.
建议您一次设置后不要更改KFXLogConfigurator的配置设置。这些属性是非原子的,因此不是线程安全的。如果您仅在开始记录日志之前设置配置设置,然后您可以在没有问题的情况下从任何线程调用KFXLog的方法,因为内部我们只从这些属性中读取。我考虑将所有配置属性设置为原子,但这种开销似乎是不必要的,因为即使所有属性都是线程安全的,仍然更合理地保持应用程序生命周期的配置设置一致。
常见任务
日志输出到控制台
-
打开 AppDelegate.m
-
添加: #import "KFXLogConfigurator.h"
-
在 -application: didFinishLaunchingWithOptions
KFXLogConfigurator *config = [KFXLogConfigurator sharedConfigurator]; config.buildConfiguration = KFXBuildConfigurationDebug; // Set to clean (print) or standard (NSLog) config.consoleLogType = KFXConsoleLogTypeClean; config.debugLogMediums = KFXLogMediumConsole; // Set your log format style (look at KFXFormattedLogDescriptor to see the options) [config.cleanLogDescriptor configureWithLogFormat:KFXLogFormatFir];
-
然后开始记录日志。
[KFXLog logConfiguredObject:config sender:self];
日志输出到文件
-
打开 AppDelegate.m
-
添加: #import "KFXLogConfigurator.h"
-
在 -application: didFinishLaunchingWithOptions
KFXLogConfigurator *config = [KFXLogConfigurator sharedConfigurator]; config.buildConfiguration = KFXBuildConfigurationDebug; config.debugLogMediums = KFXLogMediumFile; // Set your log format style (look at KFXFormattedLogDescriptor to see the options) [config.fileLogDescriptor configureWithLogFormat:KFXLogFormatOak];
-
然后开始记录日志。
[KFXLog logConfiguredObject:config sender:self];
日志输出到警告
-
打开 AppDelegate.m
-
添加: #import "KFXLogConfigurator.h"
-
在 -application: didFinishLaunchingWithOptions
KFXLogConfigurator *config = [KFXLogConfigurator sharedConfigurator]; config.buildConfiguration = KFXBuildConfigurationDebug; config.debugLogMediums = KFXLogMediumAlert; // Set your log format style (look at KFXFormattedLogDescriptor to see the options) [config.alertLogDescriptor configureWithLogFormat:KFXLogCherry];
-
然后开始记录日志。
[KFXLog logConfiguredObject:config sender:self];
日志输出到服务
-
创建一个新的类作为 ServiceLogger,使其符合 KFXServiceLoggerInterface 协议(继承自 KFXLoggerInterface)
-
实现协议 KFXLoggerInterface 中定义的任何可选方法,以便您的实现将消息等发送到您的 WebService。
-
打开 AppDelegate.m
-
添加: #import "KFXLogConfigurator.h" + 您的服务记录器类
-
在 -application: didFinishLaunchingWithOptions
KFXLogConfigurator *config = [KFXLogConfigurator sharedConfigurator]; config.buildConfiguration = KFXBuildConfigurationDebug; config.debugLogMediums = KFXLogMediumService; // Set your log format style (look at KFXFormattedLogDescriptor to see the options) [config.serviceLogDescriptor configureWithLogFormat:KFXLogMaple]; // Set your class as the serviceLogger config.serviceLogger = [[DEMOServiceLogger alloc]init];
-
然后开始记录日志。
[KFXLog logConfiguredObject:config sender:self];
查看日志文件
要在设备上显示日志文件,您只需创建一个 KFXLogFilesMasterTVC 的实例,并在 UINavigationController 中显示它。
如果您的显示视图控制器已经嵌入到 UINavigationController 中,则以下内容就足够了。
KFXLogFilesMasterTVC *logFilesTVC = [[KFXLogFilesMasterTVC alloc]init];
[self.navigationController showViewController:logFilesTVC sender:self];
如果您的显示视图控制器尚未嵌入到 UINavigationController 中,请使用以下代码。
KFXLogFilesMasterTVC *logFilesTVC = [[KFXLogFilesMasterTVC alloc]init];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:logFilesTVC];
logFilesTVC.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"Dismiss" style:UIBarButtonItemStylePlain target:self action:@selector(dismissButtonTapped:)];
[self showViewController:nav sender:self];
// Implement the -dismissButtonTapped: method...
日志格式样式
对于KFXFormattedLogDescriptor的子类,有许多属性可以进行更改。为了简化事情,我建立了一些样式,您可以使用KFXLogFormat枚举与它们一起使用,如下所示
[config.fileLogDescriptor configureWithLogFormat:KFXLogFormatBirch];
您可以在KFXFormattedLogDescriptor.m中查看每个样式的设置——我认为这应该是一个更易于用户操作的地方。以下是每个样式的示例。找到一个与您所需内容相近的样式,然后根据您的喜好调整设置。
KFXLogFormatFir
◎ <INFO> This is some info.; Sender: <AppDelegate: 0x7fb220d01eb0>;
◎ <WARNING> This is a warning, warning, warning; Sender: <AppDelegate: 0x7fb220d01eb0>;
KFXLogFormatAsh
◎ [8/5/16, 4:49:59 PM] <INFO> This is some info.; Sender: AppDelegate;
◎ [8/5/16, 5:08:33 PM] <WARNING> This is a warning, warning, warning; Sender: AppDelegate;
KFXLogFormatWalnut
<INFO> This is some info.;
<WARNING> This is a warning, warning, warning;
KFXLogFormatTeak
<INFO> This is some info.; Sender: <AppDelegate: 0x7fde0be079a0>;
<WARNING> This is a warning, warning, warning; Sender: <AppDelegate: 0x7fde0be079a0>;
KFXLogFormatBalsa
* [INFO] This is some info.;
* [WARNING] This is a warning, warning, warning;
KFXLogFormatMahogany
• <INFO>--------- This is some info.; Sender: <AppDelegate: 0x7f990a508330>;
• <WARNING>------ This is a warning, warning, warning; Sender: <AppDelegate: 0x7f990a508330>;
KFXLogFormatBirch
★ [8/5/16, 5:10:44 PM] <INFO>~~~~~~~~~~~~~~~~~~~ This is some info.; Sender: AppDelegate; <AppDelegate: 0x7fddeaf0b840>;
★ [8/5/16, 5:10:44 PM] <WARNING>~~~~~~~~~~~~~~~~ This is a warning, warning, warning; Sender: AppDelegate; <AppDelegate: 0x7fddeaf0b840>;
KFXLogFormatOak
## [8/5/16, 5:11:28 PM] _________________<*INFO*> Sender: <AppDelegate: 0x7fd9b8411a30>; This is some info.;
## [8/5/16, 5:11:28 PM] ______________<*WARNING*> Sender: <AppDelegate: 0x7fd9b8411a30>; This is a warning, warning, warning;
KFXLogFormatPine
[8/5/16, 5:12:08 PM] !INFO! This is some info.;
[8/5/16, 5:12:08 PM] !WARNING! This is a warning, warning, warning;
KFXLogFormatMaple
(INFO) This is some info.;
(WARNING) This is a warning, warning, warning;
KFXLogFormatCherry
(INFO) Sender: AppDelegate; This is some info.;
(WARNING) Sender: AppDelegate; This is a warning, warning, warning;
KFXLogFormatRedwood
+ [8/5/16, 5:13:58 PM] [INFO]______________ Sender: <AppDelegate: 0x7fe5cae05b80>; This is some info.;
+ [8/5/16, 5:13:58 PM] [WARNING]___________ Sender: <AppDelegate: 0x7fe5cae05b80>; This is a warning, warning, warning;
KFXLogFormatHolly
Δ [8/5/16, 5:14:27 PM] [INFO] This is some info.; Sender: <AppDelegate: 0x7ffa93507340>;
Δ [8/5/16, 5:14:27 PM] [WARNING] This is a warning, warning, warning; Sender: <AppDelegate: 0x7ffa93507340>;
作者
Christian Fox, [email protected]
许可证
KFXLog遵照MIT许可证。更多信息请参阅LICENSE文件。