NRGLog 1.0.1

NRGLog 1.0.1

测试测试
语言语言 Obj-CObjective C
许可证 自定义
发布最后发布2015年8月

Georgiy Malyukov维护。



NRGLog 1.0.1

简单的 Objective C 管理日志库。

NRGLog 使用标准的 NSLog() 函数,因此您不应该自行重新定义此宏。

将 NRGLog 添加到您的项目中

源文件

或者您可以直接将 NRGLog.hNRGLog.m 源文件添加到您的项目中。

  1. 下载最新代码版本最新代码版本,或将仓库作为 git 子模块添加到您的 git 跟踪项目中。
  2. 在 Xcode 中打开您的项目,然后拖动并放下 NRGLog.hNRGLog.m 到您的项目中(使用“产品导航视图”)。如果您在项目外部解压了代码归档,请确保选择“复制项”。
  3. 使用 #import "NRGLog.h" 在您需要 NRGLog 的地方包含它。

使用方法

所有代码都可以按照虚拟组进行分离,例如,网络请求、UI 动画情况等。NRGLog 可帮助您独立地使用单个 NRGLog 管理代码对这些部分进行记录。

// define your tokens
#define LOG_TOKEN_NETWORK @"network"

// log
[NRGLog logToken:LOG_TOKEN_NETWORK format:@"My network request RAW: %@", yourRaw];

标记和组

标记词组和标记组之间有所区别。

  • 标记是一个精确短语,它标识您的某个 逻辑 组的动作。
  • 标记组是一个 物理 组,它允许您同时启用或禁用您的多个标记。

让我们看看它是如何工作的。

强烈建议您在单独的标题文件中定义您的标记和组,例如,NRGLogWrapper.h

让您的应用程序与网络一起工作,因此它可以在发送请求和接收响应。您可能还想管理网络连接状态。为每个操作(请求和响应)创建三个单独的标记并按网络组分组是很方便的。

以下是如何实现它,根据我的建议

#ifndef NRGLOGWRAPPER_H
#define NRGLOGWRAPPER_H

#pragma mark - Groups

// networking
#define LOG_GROUP_NETWORK       @"network"
#define LOG_GROUP_NETWORK_QUERY LOG_GROUP_NETWORK ".query"

#pragma mark - Tokens

// networking
#define LOG_TOKEN_NETWORK_CONNECTION     LOG_GROUP_NETWORK ".connection"
#define LOG_TOKEN_NETWORK_QUERY_REQUEST  LOG_GROUP_NETWORK_QUERY ".request"
#define LOG_TOKEN_NETWORK_QUERY_RESPONSE LOG_GROUP_NETWORK_QUERY ".response"

#endif

现在您有两个组,其中一个组是另一个组的子组,并且这些组中包含三个标记。使用此配置很简单

[NRGLog logToken:LOG_TOKEN_NETWORK_CONNECTION 
          format:@"Connection established."];
[NRGLog logToken:LOG_TOKEN_NETWORK_QUERY_REQUEST 
          format:@"Request sent: %@", requestRaw];
[NRGLog logToken:LOG_TOKEN_NETWORK_QUERY_RESPONSE 
          format:@"Response received: %@ (error: %@)", responseRaw, error];

将标记分组使用的主要好处是,您可以在任何时候禁用任何组,而且所有包含指定组名的标记短语都将 不会 在日志中打印,直到您再次启用该组。

例如,此代码行:...

[[NRGLog instance] setTokenGroup:LOG_GROUP_NETWORK_QUERY enabled:NO];

将禁用令牌 LOG_TOKEN_NETWORK_QUERY_REQUESTLOG_TOKEN_NETWORK_QUERY_RESPONSE,但不会禁用全局 network 组,因此令牌 LOG_TOKEN_NETWORK_CONNECTION 将可访问。

如果您觉得这样更方便,您可以自由使用不带组的精确令牌短语,但强烈建议您使用组来更灵活地管理日志。

附加功能

您可以通过为 options 属性设置自定义的 bitmaske 选项来配置 NRGLog 消息的显示模式。以下是所有可用的值

  • NRGLogOptionNone - 表示没有启用选项。 NRGLog 将只显示您格式字符串和参数的简单消息,不再有其他。它等于零,只是为了方便命名。
  • NRGLogOptionDisplayToken - 如果启用,则将在每条日志消息之前打印令牌名称。
  • NRGLogOptionDisplayMethod - 打印当前正在执行的方法。

请注意,所有这些选项默认启用。

没有设置选项的最简配置将打印这个

// in your global configuration file, or, for example, in AppDelegate.m
[NRGLog instance].options = NRGLogOptionNone;

// then somewhere in your code
[NRGLog logToken:LOG_TOKEN_NETWORK_CONNECTION format:@"Connection established."];

控制台输出

| Connection established.

现在让我们比较一下所有选项都启用的情况

[NRGLog logToken:LOG_TOKEN_NETWORK_CONNECTION format:@"Connection established."];

控制台输出

| network.connection | [AppDelegate application:didFinishLaunchingWithOptions:] | Connection established.

请注意,您可以在任何时候更改您的日志选项配置,它只会影响未来的 logToken:format: 方法调用。

线程安全性

NRGLog 完全线程安全,您可以在异步线程中自由使用它。只需记住,NRGLog 使用标准 NSLog() 函数,因此请记得在产品项目的方案中禁用 loggingEnabled 属性,以避免性能问题。

许可协议

Apache许可。有关详情,请参阅 LICENSE 文件。