Objective-C 中的简单高效日志库。
或者,您可以直接将库的所有源文件添加到您的项目中。
#import "RLog.h"
将 RLog 库包含到需要的位置。首先,配置日志类(您可以在应用程序中的任何时间更改此配置)
// indicates whether logged messages should be displayed in a system console
[RLog instance].consoleDisplayMessages = NO; // YES by default
// contains minimal message log level for displaying in a system console
[RLog instance].consoleLogLevel = RL_WARN; // RL_VERBOSE by default
如果显示启用,则满足最小日志级别要求的所有消息将使用当前线程中的标准 NSLog()
函数显示在系统 Xcode 控制台中。
可用日志级别(按重要性排序)
RL_INFO
(等于 RL_VERBOSE
和 RL_ALL
)。显示所有消息。仅出于方便而创建的别名。RL_WARN
- 警告和更高等级。RL_ERROR
- 错误和更高等级。RL_FATAL
- 只有临界错误。请注意,这些级别仅影响系统控制台中的显示。对于其他目的,您应使用过滤(如下文所述)。
接下来,有几个有用的宏可以帮助您记录事件
RLENTRY; // logs empty message, useful for logging methods' entry points
RLINFO(format, ...); // logs info message
RLWARN(format, ...); // logs warning message
RLERROR(format, ...); // logs error message
RLFATAL(format, ...); // logs critical error message
RLog
存储所有消息,包括其创建日期(UTC)、消息、调用方法和日志级别。以后您可以使用这些数据来过滤您的消息。
您保存的所有日志将存储在内存中。有时您可能需要提取存储的消息以进行进一步处理。
以下声明的方法是第一个
- (NSArray<RLMessage *> *)filterWithBlock:(_Nullable RLFilterBlock)block;
它接受一个可选的过滤块,帮助您过滤存储的消息。此块只有一个类型为 RLMessage
的输入参数,如果消息满足您的过滤要求,则应返回 YES
,否则返回 NO
。此块是可选的,因此您可以用 nil
传递它以获取所有存储的消息。
当然,您可能希望将日志保存到物理文件中。可以通过调用此方法来完成此操作
- (void)flushToFileAtPath:(NSString *)path usingFilter:(_Nullable RLFilterBlock)block;
可选的过滤器块与上述解释的功能相同。如果将数据写入文件操作成功,那么所有内存中存储的消息将被自动清理。
有时您可能需要在不将其写入文件的情况下清除日志。您可以使用此方法来完成此操作
- (void)clear;
这是一个破坏性操作,不能撤销,使用时请小心。
MIT