Restkit,停止日志记录?

25
我想知道... 我使用Restkit时,它会显示可达性信息和请求信息。这些信息在生产版本中会自动停止显示吗?还是需要像设置RKLog级别这样做才能停止显示它们?
谢谢。
5个回答

39

要关闭所有内容,请将以下代码添加到您的应用程序委托中。

RKLogConfigureByName("*", RKLogLevelOff);

注意:至少在RestKit v0.20.x中,您仍将在开发版本中看到“RestKit logging initialized…”消息。


13

如果只想禁止显示Reachability消息,请使用以下代码:

RKLogConfigureByName("RestKit/Network/Reachability", RKLogLevelCritical);

请查看 lcl_config_components.h获取完整列表:

 "restkit"                           "RestKit" 
 "restkit.network"                   "RestKit/Network" 
 "restkit.network.cache"             "RestKit/Network/Cache" 
 "restkit.network.queue"             "RestKit/Network/Queue" 
 "restkit.network.reachability"      "RestKit/Network/Reachability" 
 "restkit.object_mapping"            "RestKit/ObjectMapping" 
 "restkit.core_data"                 "RestKit/CoreData" 
 "restkit.core_data.cache"           "RestKit/CoreData/Cache" 
 "restkit.core_data.search_engine"   "RestKit/CoreData/SearchEngine" 
 "restkit.support"                   "RestKit/Support" 
 "restkit.support.parsers"           "RestKit/Support/Parsers" 
 "restkit.three20"                   "RestKit/Three20" 
 "restkit.ui"                        "RestKit/UI" 
 "restkit.testing"                   "RestKit/Testing" 
 "app"                               "App" 

我想指出,通过添加RKLogConfigureByName("App", RKLogLevelDebug);,人们可以在他们的应用程序中使用RKLogDebug。我花了一些时间才弄清楚这行代码是必需的,以便为我的应用程序使用RestKit的日志记录功能。 - pshah

12

在 RestKit 应用程序中,日志消息由 RKLog 调用控制。例如:

    RKLogConfigureByName("RestKit", RKLogLevelWarning); 
    RKLogConfigureByName("RestKit/ObjectMapping", RKLogLevelTrace);
    RKLogConfigureByName("RestKit/Network", RKLogLevelTrace);

RKLog 是使用 Aren Harren 的 lcl_log(参见 http://0xc0.de/LibComponentLogging)库实现的。我仅粗略地浏览了 lcl 的代码,并没有看到任何防止在生产版本中打印的代码,因此我会确保我的 RKLog 代码不会出现在生产代码中。


那是不是意味着我不必担心它?它会在生产中被移除吗?我不想因为有调试消息而被拒绝我的应用程序 :) - Veeru
抱歉如果我表达得不清楚。我没有看到任何防止日志记录的机制,所以我认为你需要将其删除。这让我有点吃惊。我无法进行测试,我的RestKit应用程序还未上架。 - Paul Cezanne
RestKit日志记录在此处解释:http://restkit-tutorials.com/logging-in-restkit-debug-tips/。 - Alex Kurkin

8
RestKit被配置为在DEBUG版本中显示信息消息及以上级别的日志。在非DEBUG版本中,只记录警告、错误和关键消息。这是通过RKLog.h中的RKLogLevelDefault定义的。
如果您想更改RestKit日志组件之一的日志级别,可以使用组件名称和RKLogLevel日志级别调用RKLogConfigureByName(component, level)函数。可以使用RKLogConfigureByName("*", RKLogLevelOff)来禁用所有组件的日志记录。请确保在第一次调用时已调用RKLogInitialize(),因为RKLogInitialize()将覆盖RestKit组件的日志级别设置。
如果您想从生产版本中删除所有日志记录代码,只需将预处理器定义_LCL_NO_LOGGING添加到构建设置中即可。有关详细信息,请参见http://0xc0.de/LibComponentLogging

4

Kyle的解决方案是正确的。Swift版本略有不同:

 RKlcl_configure_by_name("*", RKlcl_vOff.rawValue)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接