тл; д-р
NSLog( @"ERROR %@ METHOD %s:%d ", @"DescriptionGoesHere", __func__, __LINE__ );
Деталі
Apple має сторінку технічних запитань та запитів : QA1669 - Як я можу додати інформацію про контекст - наприклад, поточний метод чи номер рядка - до моїх заяв про реєстрацію?
Щоб допомогти в реєстрації:
- Препроцесор C забезпечує кілька макросів .
- Objective-C забезпечує вирази (методи).
- Передайте неявний аргумент для селектора поточного методу:
_cmd
Як зазначено в інших відповідях, щоб просто отримати назву поточного методу, зателефонуйте:
NSStringFromSelector(_cmd)
Щоб отримати поточне ім'я методи і номер поточного рядка, використовуйте ці два макрос __func__
і , __LINE__
як показано тут:
NSLog(@"%s:%d someObject=%@", __func__, __LINE__, someObject);
Інший приклад… Фрагменти коду, який я зберігаю в бібліотеці фрагментів коду Xcode:
NSLog( @"ERROR %@ METHOD %s:%d ", @"DescriptionGoesHere", __func__, __LINE__ );
… І TRACE замість помилки…
NSLog( @"TRACE %@ METHOD %s:%d ", @"DescriptionGoesHere", __func__, __LINE__ );
… І довший, використовуючи опис з м'яким кодом, передаючи значення ( [rows count]
)…
NSLog( @"TRACE %@ METHOD %s:%d.", [NSString stringWithFormat:@"'Table of Contents.txt' file's count of Linefeed-delimited rows: %u.", [rows count]] , __func__, __LINE__ );
Препроцесорні макроси для ведення журналу
Зверніть увагу на використання пари символів підкреслення навколо обох сторін макросу.
| Макрос | Формат | Опис
__func__% s Підпис поточної функції
__LINE__% d Поточний номер рядка
__FILE__% s Повний шлях до вихідного файлу
__PRETTY_FUNCTION__% s Як і __func__, але включає багатослівне
введіть інформацію в код C ++.
Вирази для ведення журналів
| Вираз | Формат | Опис
NSStringFromSelector (_cmd)% @ Ім'я поточного селектора
NSStringFromClass ([самоклас])% @ Ім'я класу поточного об'єкта
[[NSString% @ ім'я файлу вихідного коду
stringWithUTF8String: __ FILE__]
lastPathComponent]
[NSThread callStackSymbols]% @ NSArray сліду стека
Рамки ведення журналів
Деякі рамки реєстрації можуть також допомогти отримати поточний метод або номер рядка. Я не впевнений, оскільки я використовував чудовий фреймворк журналу в Java ( SLF4J + LogBack ), але не какао.
Дивіться це запитання для посилань на різні рамки реєстрації какао.
Ім'я селектора
Якщо у вас є змінна Selector ( SEL ), ви можете роздрукувати її ім'я методу ("message") будь-яким із двох способів, як описано у цій публікації блогу Codec :
- Використання виклику Objective-C на NSStringFromSelector :
NSLog(@"%@", NSStringFromSelector(selector) );
- Використання прямої C:
NSLog(@"%s", selector );
Ця інформація, отримана із пов’язаної сторінки документа Apple, станом на 19.07.2013. Ця сторінка востаннє оновлена 2011-10-04.
iPhone
проекті я насправді робив це вручну. Я хотів би побачити відповідь на це.