KFXLog 2.1.0

KFXLog 2.1.0

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布上次发布2021年2月

Christian FoxChristian Fox 维护。



KFXLog 2.1.0

  • Christian Fox

KFXLog

Version License Platform

示例

要运行示例项目,克隆存储库,运行应用程序并点击一些按钮。

所有配置都在AppDelegate中设置,您可以通过修改配置属性来查看它们对格式的影响。

要求

iOS 8.2+

Xcode 7+

安装

KFXLog可通过CocoaPods使用。要安装它,只需在您的Podfile中添加以下行即可

pod "KFXLog"

简介

使用方法

配置

在调用任何KFXLog方法之前,应自定义KFXLogConfigurator。

  1. 获取KFXLogConfigurator单例的引用(不要使用 -init 初始化实例)。

    KFXLogConfigurator *config = [KFXLogConfigurator sharedConfigurator];
  2. 自定义您想从默认值更改的任何全局设置

    config.buildConfiguration = KFXBuildConfigurationDebug;
    config.consoleLogType = KFXConsoleLogTypeClean;
    config.debugLogMediums = KFXLogMediumConsole | KFXLogMediumFile | KFXLogMediumAlert;
    config.adHocLogMediums =  KFXLogMediumFile | KFXLogMediumAlert;
    config.releaseLogMediums = KFXLogMediumFile | KFXLogMediumService;
    config.shouldLogUncaughtExceptions = NO;
  3. 自定义所需日志媒体的描述符(控制台、文件、警报、服务)

    // 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];
  4. 如果您正在使用服务日志类,则创建其实例并在配置器上设置serviceLogger属性

    config.serviceLogger = [DEMOServiceLogger serviceLogger];
  5. 如果您想打印设置摘要

    [config printSettings];

日志记录

  1. <KFXLog/KFXLog.h>导入

  2. 日志记录

    [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的方法,因为内部我们只从这些属性中读取。我考虑将所有配置属性设置为原子,但这种开销似乎是不必要的,因为即使所有属性都是线程安全的,仍然更合理地保持应用程序生命周期的配置设置一致。

常见任务

日志输出到控制台

  1. 打开 AppDelegate.m

  2. 添加: #import "KFXLogConfigurator.h"

  3. 在 -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];
    
  4. 然后开始记录日志。

    [KFXLog logConfiguredObject:config sender:self];
    

日志输出到文件

  1. 打开 AppDelegate.m

  2. 添加: #import "KFXLogConfigurator.h"

  3. 在 -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];
    
  4. 然后开始记录日志。

    [KFXLog logConfiguredObject:config sender:self];
    

日志输出到警告

  1. 打开 AppDelegate.m

  2. 添加: #import "KFXLogConfigurator.h"

  3. 在 -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];
    
  4. 然后开始记录日志。

    [KFXLog logConfiguredObject:config sender:self];
    

日志输出到服务

  1. 创建一个新的类作为 ServiceLogger,使其符合 KFXServiceLoggerInterface 协议(继承自 KFXLoggerInterface)

  2. 实现协议 KFXLoggerInterface 中定义的任何可选方法,以便您的实现将消息等发送到您的 WebService。

  3. 打开 AppDelegate.m

  4. 添加: #import "KFXLogConfigurator.h" + 您的服务记录器类

  5. 在 -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];
    
  6. 然后开始记录日志。

    [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文件。