LogglyLogger-CocoaLumberjack 3.0.0

LogglyLogger-CocoaLumberjack 3.0.0

测试测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2016 年 11 月

Mats Melke 维护。



  • Mats Melke

LogglyLogger-CocoaLumberjack 是 CocoaLumberjack 的自定义日志记录器,可以将日志记录到 Loggly。

要求

  • 一个 Loggly 账户。(注意,他们对较高的日志量进行收费)
  • CocoaLumberjack >= 2.0

(从 LogglyLogger-CocoaLumberjack 的 2.3.0 版本开始,AFNetworking 不再是一个依赖项)

LogglyLogger-CocoaLumberjack 使用 ARC。如果您的项目不使用 ARC,您可以在 Xcode 中项目目标下的“构建选项”和“编译源代码”中使用 -fobjc-arc 编译器标志按文件启用它。

用法

首先,请确保您已在 Loggly 账户中创建了一个 API 密钥(他们称这是客户令牌,可以在 Loggly 网页 UI 下的“源设置”标签中创建)。

在您的 App Delegate 中

#import "LogglyLogger.h"
#import "LogglyFormatter.h"
static const DDLogLevel ddLogLevel = DDLogLevelVerbose;

在 didFinishLaunchingWithOptions 中

LogglyLogger *logglyLogger = [[LogglyLogger alloc] init];
[logglyLogger setLogFormatter:[[LogglyFormatter alloc] init]];
logglyLogger.logglyKey = @"your-loggly-api-key";

// Set posting interval every 15 seconds, just for testing this out, but the default value of 600 seconds is better in apps
// that normally don't access the network very often. When the user suspends the app, the logs will always be posted.
logglyLogger.saveInterval = 15;

[DDLog addLogger:logglyLogger];

// Do some logging
DDLogVerbose(@"{\"myJsonKey\":\"some verbose json value\"}");

就是这样。日志条目将包括您放入日志消息中的所有 json 字段以及日志记录器自动添加的一些标准字段

  • loglevel - CocoaLumberjack 日志级别
  • timestamp - iso8601 格式的时间戳(Loggly 所需)
  • file - 记录消息的源文件名称
  • fileandlinenumber - 该文件中的源文件和行号(在 Loggly 中进行面向特征搜索很方便)
  • appname - 您应用程序的显示名称
  • appversion - 您应用程序的版本。您可以在 LogglyFields 对象中设置自己的 appversion 以进行覆盖。
  • devicemodel - 设备型号
  • devicename - 设备名称
  • lang - 应用程序用户在设备上的设置中选择的 主要语言
  • osversion - iOS 版本
  • rawlogmessage - 您发送的日志消息,未解析。这也会显示简单的非 JSON 日志消息。
  • sessionid - 生成的随机 id,让您可以搜索来自同一会话的日志语句。您可以在 LogglyFields 对象中设置自己的 sessionid 以覆盖此随机值。
  • userid - 用户 ID 字符串。注意,您必须在 LogglyFields 对象中自己设置此用户 ID。没有默认值。

请注意,您不需要按 JSON 格式记录语句,但如果使用 JSON,则在 Loggly 中执行面向特征搜索会容易得多。警告:不要使用太多的 JSON 键。这会打乱 Loggly UI。找出您可以在许多日志语句中重用的智能 JSON 键。

高级用法

Loggly 标签

LogglyLogger 使用您的应用的 bundle id 作为 Loggly 标签。您可以在 Loggly 中创建一个“源组”,其中包含所有具有特定标签的日志语句。这样,您就可以轻松地使用相同的 Loggly 账户为多个应用提供服务。如果不想使用 bundle id 作为标签或想使用多个标签,您可以在 LogglyLogger 中设置属性 logglyTags。(标签之间以逗号分隔,标签内部和之间不含空格)

LogglyLogger 配置

您可以在 LogglyLogger 上设置一些配置。其中大多数都是从抽象类继承的,并且它们都有合理的默认值。

  • saveInterval - 将日志语句发布到 Loggly 之间的秒数。默认 = 600。注意,日志总是会在应用挂起时发布。将此值设置得较低可能会使您的应用功耗增加。
  • saveThreshold - 在强制发布之前,日志消息的数量。默认 1000。

默认情况下,即使日志消息已成功解析并作为单独的 JSON 字段记录,日志消息也总是会记录在 Loggly 字段“rawlogmessage”中。为了防止在这种情况下记录 rawlogmessage,将 LogglyFormatter 属性 alwaysIncludeRawMessage 设置为 NO。

    LogglyFormatter *logglyFormatter = [[LogglyFormatter alloc] init];
    logglyFormatter.alwaysIncludeRawMessage = NO;

    LogglyLogger *logglyLogger = [[LogglyLogger alloc] init];
    [logglyLogger setLogFormatter:logglyFormatter];

跟踪会话和用户

要跟踪特定用户,您可以在 LogglyFields 对象上设置 userid 属性。然后,直到 iOS 终止应用,用户名将包含在每个日志语句中。

类似地,您可以设置自定义会话 id。如果不设置,会话 id 将是随机字符串。假设一名用户在您的应用中抱怨出现问题时。您可以在您的应用中设置一些输入视图,让用户输入一个字符串作为 sessionid。同时,您可以为此用户将 CocoaLumberjack 日志级别设置为更细的级别。现在,您可以过滤出除这个特定会话之外的所有日志,在 Loggly 中跟踪这个特定用户的所有详细日志。不错吧?

自定义 LogglyFieldsDelegate

如果您对每个请求都记录的标准字段不满意,您可以实现自己的 LogglyFieldsDelegate。您只需要实现一个方法。

@protocol LogglyFieldsDelegate
- (NSDictionary *)logglyFieldsToIncludeInEveryLogStatement;
@end

使用这个初始化方法在创建 LogglyFormatter 时使用您的自定义代理。

LogglyFormatter *logglyFormatter = [[LogglyFormatter alloc] initWithLogglyFieldsDelegate:yourCustomDelegate];

反馈和贡献

非常感谢所有的反馈和贡献。请发送拉取请求、创建问题或通过电子邮件发送到 [email protected]

版权

  • 版权(c)2014- Mats Melke。有关详细信息,请参阅 LICENSE.txt。