【问题标题】:Restkit, Stop Logging?Restkit,停止记录?
【发布时间】:2012-06-08 07:19:54
【问题描述】:

我想知道.. Restkit 不断显示可达性信息,在我使用它时请求信息。这会在生产版本中自动停止,还是我需要做一些事情来阻止它们显示,比如设置 RKLog 级别?

谢谢

【问题讨论】:

    标签: ios cocoa-touch restkit


    【解决方案1】:

    要关闭所有功能,请将其添加到您的应用委托中。

    RKLogConfigureByName("*", RKLogLevelOff);
    

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

    【讨论】:

      【解决方案2】:

      要仅抑制可达性消息,请使用以下命令:

      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 的日志记录。
      【解决方案3】:

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

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

      RKLog 是通过 Aren Harren 的 lcl_log(参见 http://0xc0.de/LibComponentLogging)库实现的。我只是简单地查看了 lcl 的代码,并没有看到任何会阻止它在生产版本中打印的代码,所以我会确保我的 RKLog 代码不会出现在生产代码中。

      【讨论】:

      • 这是否意味着我不必担心它?它会在生产中被删除吗?我不希望我的应用因为有调试消息而被拒绝:)
      • 对不起,如果我不清楚。我没有看到任何防止记录的机制,所以我认为你确实需要删除它。我对此感到有些惊讶。我无法对此进行测试,我的 RestKit 应用尚未在应用商店中。
      【解决方案4】:

      RestKit 被配置为在 DEBUG 构建中显示信息消息及更高版本。在非调试版本中,仅记录警告、错误和关键消息。这是通过RKLogLevelDefault 中的RKLog.h 定义的。

      如果您想更改 RestKit 的日志组件之一的日志级别,可以使用 component 名称和 RKLogLevel 日志 level 调用 RKLogConfigureByName(component, level)RKLogConfigureByName("*", RKLogLevelOff) 可用于禁用所有组件的日志记录。确保之前调用了 RKLogInitialize(),因为 RKLogInitialize() 在第一次调用时会覆盖 RestKit 组件的日志级别设置。

      如果您想从生产构建中删除所有日志记录代码,您只需将预处理器定义 _LCL_NO_LOGGING 添加到构建设置中即可。详情请见http://0xc0.de/LibComponentLogging

      【讨论】:

        【解决方案5】:

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

         RKlcl_configure_by_name("*", RKlcl_vOff.rawValue)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-13
          • 2011-01-16
          • 2015-12-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多