2013-11-11 1 views
7

Когда мы подаем заявку с заявлениями NSLog,Что произойдет с заявлениями NSLog на производстве?

Каков будет эффект от заявлений? Будут ли все еще выполняться? Если они выполняются, будут ли эти журналы храниться где-то в виде журналов приложений/системных журналов? Можем ли мы их увидеть? Связано ли это с сообщением о сбоях Apple в iTunesConnect?

Просьба уточнить мои сомнения.

ответ

7

Короткий ответ: -

  1. Да он выполняет в производстве приложение
  2. NSLog просто войти в консоль, я не думаю, что он хранится где-нибудь.
  3. Мы можем видеть только на консоли.
  4. При сбое приложения NSLog не печатает в отчетах о сбое.
+2

@downvoter, пожалуйста, поправьте меня, прежде чем давать downvote. –

+1

Если вы могли бы дать некоторые поддерживающие ссылки, это было бы здорово. Спасибо за Ваш ответ. –

5

NSLog звонки могут быть оставлены в производственном коде. Он будет занесен в системный журнал. Приложения, которые засоряют системный журнал, раздражают и непрофессиональны. Так что попробуйте использовать макросы в Logging таким образом, что вы можете удалить выполнение кода журнала в производстве

#define DEBUG_MODE 

#ifdef DEBUG_MODE 
    #define DebugLog(s, ...) NSLog(@"<%p %@:(%d)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__]) 
#else 
    #define DebugLog(s, ...) 
#endif 
+3

На самом деле, вы должны иметь несколько уровней лога. По-прежнему имеет смысл регистрировать предупреждения и ошибки в производстве. – Sulthan

+1

Удаление всех журналов затрудняет удаление ошибок и чтение отчетов, но да nslog замедляет работу приложения, так как многие пользователи SO сообщили о значительных улучшениях скорости после удаления журналов. – amar

+0

Является ли Макрос менее трудоемким? –

2

Да оператор выполняется, если вы оставили его в сборке релиза.

Таким образом, ее лучше практика, чтобы комментировать NSLog в релиз сборки или использования Debug Mode как сказал @Lithu T.V

Делая это производительность будет лучше. Потому что NSLog довольно медленный. NSLog будет делать две вещи. 1) записывать сообщения журнала в систему регистрации системы (ASL) 2) если приложение работает в xcode, оно также записывает в stderr.

Основная проблема лежит в первом. Чтобы обеспечить безопасность потока, каждый раз, когда вызывается NSLog, он открывает соединение с ASL-объектом, отправляет сообщение и закрывает соединение. Операция подключения очень дорога. Другая причина заключается в том, что NSLog проводит некоторое время, чтобы получить метку времени для регистрации.

ОБНОВЛЕНИЕ: Также я не думаю, что есть прямой способ проверить журнал из системы, однако есть некоторые программные средства, которые помогают при просмотре журнала консоли. Следующие могут помочь вам в отображении журнала консоли: http://support.apple.com/kb/DL1465

Я никогда не пробовал это сам. Так что я не могу дать вам поручительство.

+0

Возможно ли читать ASL или просматривать ASL ... –

+0

проверить обновление ... – Neha

2

заявления NSLog будут сохранены & выполнены в производстве, если вы не собираются, чтобы удалить их. Это не очень хорошая практика. Если влияет на производительность приложения .

Существует хороший учебник по отображая журналы на MobileTuts +

Mobile Tuts Plus NSlog tutorial

В любом случае, если вы хотите сохранить его, Вы должны хранить его где-нибудь в директории документа, но тогда и вы бы не сможете получить файлы из каталога приложений устройства. Для этого вы можете загрузить его где-нибудь в webserver или что-то в этом роде. Затем вы можете получить к ним доступ.

Пожалуйста, дайте мне знать, если есть больше сомнений.

+0

Является ли заявление, которое вы упомянули о NSLog из яблоко. Если бы вы могли вставить ссылку, пожалуйста. –

+0

Nope. Это не из яблока. Но если вы проверите печать некоторых журналов с помощью NSLog в консоли, это повлияет на производительность вашего приложения и если вы хотите проверить NSLog вашего приложения на устройстве, просто откройте инструмент организатора XCode и запустите приложение, загруженное из Appstore. Вы сможете увидеть все NSLogs в консоли устройства. Надеемся, что это может устранить ваши сомнения. – iCreative

+0

Peformance - самая маленькая проблема с протоколированием. – Sulthan

4

NSLog-заявления останутся в производстве. Вы можете найти их в своем xCode-> windows-> Organizer (shift + cmd + 2), если вы подключили свое устройство. Проверьте консоль, которую вы можете увидеть, так же как и другие люди, которые используют приложение.

enter image description here

Смежные вопросы