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
반응형