Подтвердить что ты не робот

Restkit, Stop Logging?

Мне интересно. Restkit продолжает показывать информацию о достижении, запрашивать информацию, когда я ее использую. Будет ли это автоматически останавливаться в производственной версии или мне нужно что-то сделать, чтобы они не отображались, как установка уровня RKLog?

спасибо

4b9b3361

Ответ 1

Журнальные сообщения в приложении RestKit контролируются вызовами RKLog. Например:

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

RKLog реализован с помощью библиотеки Aren Harren lcl_log (см. http://0xc0.de/LibComponentLogging). Я просто кратко просмотрел код для lcl, и я не видел никакого кода, который помешал бы ему печатать в производственной версии, поэтому я бы удостоверился, что код RKLog не отображается в производственном коде.

Ответ 2

Чтобы отключить все это, добавьте это в свой делегат приложения.

RKLogConfigureByName("*", RKLogLevelOff);

Примечание. По крайней мере, в RestKit v0.20.x вы все равно увидите сообщение "RestKit logging initialized..." в dev builds.

Ответ 3

Чтобы подавить только сообщения о достижимости, используйте это:

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" 

Ответ 4

RestKit настроен для отображения информационных сообщений и выше в сборках DEBUG. В сборках, отличных от DEBUG, регистрируются только предупреждения, ошибки и критические сообщения. Это определяется через RKLogLevelDefault в RKLog.h.

Если вы хотите изменить уровень журнала для одного из компонентов журнала RestKit, вы можете вызвать RKLogConfigureByName(component, level) с именем component и RKLogLevel log level. RKLogConfigureByName("*", RKLogLevelOff) может использоваться для отключения ведения журнала для всех компонентов. Убедитесь, что ранее был вызван RKLogInitialize(), поскольку RKLogInitialize() перезаписывает параметры уровня журнала для компонентов RestKit при первом вызове.

Если вы хотите удалить весь код ведения журнала из своей производственной сборки, вы можете просто добавить препроцессор define _LCL_NO_LOGGING к вашим настройкам сборки. Подробнее см. http://0xc0.de/LibComponentLogging.

Ответ 5

Решение Кайла верное. Версия Swift немного отличается:

 RKlcl_configure_by_name("*", RKlcl_vOff.rawValue)