iOS/Swift + Objective-c
[objective-c] 로그 편하게 사용하기 (NSLog)
안경 쓴 귀니
2021. 4. 24. 00:57
반응형
Xcode에서 로그 편하게 사용하는 방법
로그를 출력할 때
어떤 파일에서 출력한 로그인지, 어떤 Function에서 출력한 로그인지를 같이 출력할 수 있다.
출력할 수 있는 대표적인 정보들은 아래와 같다.
항목 | 사용법 | 예시 |
파일 경로 및 파일명 | __FILE__ | /Users/name/Desktop/ios/TestProject/TestProject/ViewController.m |
파일명 | __FILE_NAME__ | ViewController.m |
Function명 | __FUNCTION__ | -[ViewController viewDidLoad] |
파일 라인 | __LINE__ | 31 |
- __FILE__은 실제 파일의 위치가 출력되기 때문에 잘 사용하지 않음
- __FILE_NAME__은 __FUNCTION__ 출력 시 파일명이 출력되기 때문에 잘 사용하지 않음
- __FUNCTION__과 __LINE__ 을 주로 사용함
사용 방법
prefix-header 파일 또는 어딘가에 사용하고 싶은 형식대로 define 정의
* prefix 사용 방법 : https://es1015.tistory.com/401
#define NSLog(fmt, ...) NSLog(@"%s : %@", __FILE__, fmt, ##__VA_ARGS__)
// /Users/es/Desktop/ios/TestProject/TestProject/ViewController.m : test
#define NSLog(fmt, ...) NSLog(@"%s : %@", __FILE_NAME__, fmt, ##__VA_ARGS__)
// ViewController.m : test
#define NSLog(fmt, ...) NSLog(@"%s : %@", __FUNCTION__, fmt, ##__VA_ARGS__)
// -[ViewController viewDidLoad] : test
#define NSLog(fmt, ...) NSLog(@"%d : %@", __LINE__, fmt, ##__VA_ARGS__)
// 31 : test
// 개인적으로 많이 사용하는 형식
#define NSLog(fmt, ...) NSLog(@"%s[%d] %@",__FUNCTION__, __LINE__, [NSString stringWithFormat:(fmt), ##__VA_ARGS__])
// -[ViewController viewDidLoad][28] test
로그 시에는 일반적으로 사용하던 NSLog 형식 그대로 사용
// NSLog define 미정의 시
NSLog(@"test");
// test
// define 정의 시
#define NSLog(fmt, ...) NSLog(@"%s[%d] %@",__FUNCTION__, __LINE__, [NSString stringWithFormat:(fmt), ##__VA_ARGS__])
NSLog(@"test");
// -[ViewController viewDidLoad][28] test
반응형